- 浏览: 213196 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (139)
- java (37)
- web (14)
- database (9)
- compute Net (1)
- design patten (4)
- 生活 (14)
- 求职 (5)
- j2me (1)
- 娱乐 (0)
- 漫画 (0)
- struts (5)
- hibernate (1)
- spring (2)
- ajax (3)
- oracle (3)
- UML&面向对象 (3)
- ffmpeg (2)
- eclipse (8)
- 技巧 (11)
- jsp (2)
- javascript (7)
- flex (2)
- xx (0)
- xxx (0)
- android (0)
- webservice (1)
- 博客 (1)
- jQuery (1)
- split (1)
- iss rewrite (1)
- 踩顶功能ajax (1)
- ext (2)
最新评论
-
longfu2012:
学习了
方法参数前加final的作用 -
irisAndKevin:
你的方法对整除有问题!
java 两数相除 四舍五入 精确 保留2位小数点、任意位小数点 -
wpf523:
...
方法参数前加final的作用 -
wpf523:
不错,解决了我的疑惑
方法参数前加final的作用 -
zhq426:
嗯,挺好用的吧
JAVASCRIPT 取得当前时间,包括农历时间 时间格式:2011年11月8日 16:54 星期二 农历辛卯年(兔) 十月十三 申时
1.引言
在实际工作中我们常常会遇到对数据进行加密解密的工作(如对密码数据的保护或者对网络传输的数据进行保护),因为数据加密解密需要非常复杂、高效的算法,所以通常对于一般的程序员是无法完成的工作,即使对于一些公开的加密算法进行编程都是一件非常艰巨的任务(少数智商及高的程序员除外)。幸运的是现在有很多加解密算法有现成的API,我们只要了解一些加解密的工作原理,能够使用一些加解密API来完成数据保护的工作就可以了。
2.密码学简介
密码学主要包括密码编码学(加密)和密码分析学(解密)。
2.1密码学的几个主要作用:
A. Confidentiality
机密行,对数据进行保护;
B. Authentication
鉴别性,确定收到消息的接收人是数据应该正确送达的人,入侵者不能进行伪装;
C. Integrity
完整行,消息的接受者能够判断出接收的数据是否正确,是否在传输过程中遭到篡改;
D. No repudiation
抵赖性,发送数据的人不能在事后不承认自己发过的数据。
2.2数据加解密模型
加解密算法分为两种:受限制的安全算法和非受限的安全算法。受限制的安全算法出现的比较早,最初用于军方,对一些机密的数据进行加密,由于这种安全算法算法保密,所以使用率低,而且实际加密效果并不理想。非受限安全算法是一些公开的算法,使用率高,这些算法都是基于密钥的算法,现在我们主要使用的主要是这种算法。
下面就是一个数据加解密的模型。―――加密密钥―――解密密钥――――
| |
明文->加密->密文->解密->原始明文
数据通过加密密钥进行加密,在解密的时候必须通过相应的解密密钥才能得到原始明文。
2.3数据加密的常用算法
目前常用的加密算法包括对称密钥加密算法,公开密钥加密算法等等。对称密钥加密算法包括:DES,IDEA,3DES等。公开密钥加密算法包括RSA,ECC等。
2.4 DES算法简介
DES即分组加密算法,明文密文都使用64位数据分组;采用对称算法,加密和解密算法相同,但是使用的密钥不同,密钥使用56位数;由于算法只使用了简单的数据逻辑和算术运算,所以实现起来相对简单。本文就使用DES算法来给出一个加解密工具类。
3.java 实现的对字符串加解密工具类import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.*;
import java.security.spec.*;
import com.sun.crypto.provider.SunJCE;
import java.io.Serializable;
/**
* 提供加密算法,可以对输入的字符串进行加密、解密操作
*/
public class EncryptData
{
byte[] encryptKey;
DESedeKeySpec spec;
SecretKeyFactory keyFactory;
SecretKey theKey;
Cipher cipher;
IvParameterSpec IvParameters;
public EncryptData()
{
try
{
// 检测是否有 TripleDES 加密的供应程序
// 如无,明确地安装SunJCE 供应程序
try{ Cipher c = Cipher.getInstance("DESede"); }
catch (Exception e)
{
System.err.println("Installling SunJCE provider.");
Provider sunjce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunjce);
}
// 创建一个密钥
encryptKey = "This is a test DESede Key".getBytes();
// 为上一密钥创建一个指定的 DESSede key
spec = new DESedeKeySpec(encryptKey);
// 得到 DESSede keys
keyFactory = SecretKeyFactory.getInstance("DESede");
// 生成一个 DESede 密钥对象
theKey = keyFactory.generateSecret(spec);
// 创建一个 DESede 密码
cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
// 为 CBC 模式创建一个用于初始化的 vector 对象
IvParameters =
new IvParameterSpec(new byte[]{12,34,56,78,90,87,65,43} );
}
catch (Exception exc)
{
// 记录加密或解密操作错误
}
}
/**
* 加密算法
* @param password 等待加密的密码
* @return 加密以后的密码
* @throws Exception
*/
public byte[] encrypt(String password)
{
String encrypted_password = null;
byte[] encrypted_pwd = null;
try
{
// 以加密模式初始化密钥
cipher.init(Cipher.ENCRYPT_MODE,theKey,IvParameters);
// 加密前的密码(旧)
byte[] plainttext = password.getBytes();
// 加密密码
encrypted_pwd = cipher.doFinal(plainttext);
// 转成字符串,得到加密后的密码(新)
encrypted_password = new String(encrypted_pwd);
}
catch(Exception ex)
{
// 记录加密错误
}
return encrypted_pwd;
}
/**
* 解密算法
* @param password 加过密的密码
* @return 解密后的密码
*/
public String decrypt(byte[] password)
{
String decrypted_password = null;
try
{
// 以解密模式初始化密钥
cipher.init(Cipher.DECRYPT_MODE,theKey,IvParameters);
// 构造解密前的密码
byte[] decryptedPassword = password;
// 解密密码
byte[] decrypted_pwd = cipher.doFinal(decryptedPassword);
// 得到结果
decrypted_password = new String(decrypted_pwd);
}
catch(Exception ex)
{
// 记录解密错误
}
return decrypted_password;
}
}
发表评论
-
java 两数相除 四舍五入 精确 保留2位小数点、任意位小数点
2011-11-03 17:53 7214java 四舍五入 精确 保留2位小数点、任意位小数点 ... -
两个日期之间的天数差
2011-08-11 11:02 1640/** * 两个日期之间的天数差 * @pa ... -
java split 特殊字符 分隔数组
2011-07-28 14:48 2157public class Test { /** ... -
JAVA 取得IP地址
2011-07-21 10:32 1051/** * 取得IP地址 * @param ... -
杯具博客设计
2011-07-08 22:41 883又是遇到了一个悲催的问题。 博客: 博客的设计是这样的: ... -
webservice 同步问题
2011-07-08 22:26 1082今天遇到了一个很郁闷个问题,webservice 同步问题。 ... -
二级栏目树构建
2011-05-30 15:15 822输出栏目树 public class Entr ... -
ttt
2009-10-10 12:50 782<script type="text/ ... -
JXL, POI操作excel文件zz
2009-09-27 11:59 16622008-11-10 JXL, POI操作excel文件z ... -
jxl 写 excel
2009-09-27 11:57 1060package net.blogjava.chenlb;imp ... -
方法参数前加final的作用
2009-07-17 11:01 2581方法参数前加final的作用 2009-06-28 ... -
java 调用ffmpeg执行dos bat命令 带有两个参数
2009-03-12 16:58 3464import java.io.IOException; pu ... -
java 调用ffmpeg执行dos命令
2009-03-12 16:10 1991import java.io.File; import ja ... -
增强Eclipse(MyEclipse)输入代码提示功能
2009-03-02 16:16 1657增强Eclipse(MyEclipse)输入代码提示功能 ... -
myeclipse性能提升技巧
2009-03-02 16:07 945myeclipse性能提升技巧 200 ... -
Java JDK :小心使用 boxing
2008-12-05 18:33 762[size=large]Java JDK :小心使用 boxi ... -
Java JDK:自动装箱和拆箱
2008-12-05 18:06 874[size=large]Java JDK:自动 ... -
JDK5.0新特性介绍
2008-11-16 19:13 801JDK5.0新特性介绍 [转贴 2006-02-23 15: ... -
java面向对象我基本特征
2008-11-04 15:13 799继承:子类继承父类成为特殊的父类。直接获得父类的属性和方法。是 ... -
两种Java容器类List和Set分析
2008-10-26 21:57 720容器类可以大大提高编程效率和编程能力,在Java2中,所有的容 ...
相关推荐
在Java中,对字符串进行加密和解密是软件开发中常见的需求,特别是在处理敏感信息时,如用户密码或网络传输的数据。这篇文档介绍了如何利用Java的加密库来实现这一目标。 首先,我们要理解密码学的基本概念。密码学...
在这个背景下,PB字符串加密和解密函数是开发人员常用的技术手段,用于对敏感信息进行编码,防止未经授权的访问或窃取。 在PowerBuilder中,我们可以利用内置的函数或者自定义的函数来实现字符串的加密和解密。通常...
在IT行业中,字符串加密解密是信息安全领域的重要组成部分,它涉及到数据保护、用户隐私和网络安全。本项目提供了四种常见的加密解密算法的Java实现:BASE64、AES、DES和MD5。接下来,我们将深入探讨这四种算法及其...
Java字符串加密解密是指使用Java语言对字符串进行加密和解密操作的过程。在这个过程中,我们可以使用异或运算符来对字符串进行加密和解密。下面我们将详细介绍Java字符串加密解密的实现过程和原理。 实现过程: ...
本篇将深入探讨字符串加密解密的实现方法,并以实际应用为例进行解析。 1. **字符串加密原理与方法** - **对称加密**:如DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption ...
Java 字符串加密与解密 #### 1.1 概述 在Java中,对字符串进行加密和解密是一种常见的安全措施,特别是在处理敏感数据如用户名和密码时。通过加密技术可以保护这些数据免受未经授权的访问。 #### 1.2 使用场景 - ...
JAVA中字符串的加密与解密
Java 实现字符串加密与解密的关键在于设计一个安全且可逆的算法。在这个示例中,我们看到一个简单的加密和解密方法,它们都定义在名为 `Encipher` 的类中。这个类主要使用了异或操作(XOR)以及一个预定义的密钥字符...
总的来说,Java字符串加密解密涉及到多个层面的知识,包括加密算法、密钥管理、安全协议等。理解和熟练掌握这些技术对于保障网络安全至关重要。在实际开发中,还需要关注加密算法的版本限制、密钥的安全存储以及法律...
总结来说,`JAVA可逆带秘钥字符串加密算法`主要涉及到对称加密,特别是DES算法,用于对字符串进行安全保护。通过`DESUtil.java`这样的工具类,开发者可以方便地在Java程序中集成加密和解密功能,确保数据在传输和...
总结来说,这个“java_code.rar”项目展示了Java中基于随机数和按位运算的字符串加密解密方法,对于学习和理解Java加密技术,特别是对字符串的处理,具有很好的参考价值。通过深入研究提供的代码,我们可以学习如何...
总之,Base64在文件字符串的加密和解密中扮演了重要角色,特别是在需要将二进制数据转换为文本格式的场景下。尽管它不是一种安全的加密方法,但在数据传输和存储中仍然是不可或缺的工具。通过"TestBasa64"中的示例,...
这个压缩包文件中的"加密解密字符串的例子"很可能是提供了一个关于如何在编程中实现字符串加密和解密的示例。接下来,我们将深入探讨加密解密的基础知识以及可能涉及的技术。 1. 加密解密原理: 加密是将明文(可...
这段代码首先定义了一个字符串`plainText`,然后使用`Base64.getEncoder().encode()`方法对其进行Base64编码,编码后的结果存储在`encodedBytes`中,并转化为字符串`encodedText`。接着,通过`Base64.getDecoder()....
class XORTest { public static void main(String args[]){ char a1='欢',a2='迎',a3='下',a4='载'; char secret='8'; a1=(char)(a1^secret); a2=(char)(a2^secret); a3=(char)(a3^secret);...
在Java编程语言中,字符串加密是一项重要的安全技术,它用于保护数据的隐私和安全性。字符串加密通常涉及到将明文字符串转换成密文,这样未经授权的用户就无法理解数据的原始含义。下面我们将深入探讨Java中字符串...
Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...
8. **字符串加密解密案例**:在提供的压缩包文件“字符串加密解密案例”中,可能包含具体的编程实现,如Python的cryptography库、Java的Cipher类或者JavaScript的crypto模块等,展示了如何在实际项目中应用上述理论...
在IT行业中,字符串加密解密是一项非常重要的技术,特别是在数据安全和隐私保护方面。"字符串加密解密jar包"是一个专门为处理字符串加密和解密任务而设计的Java应用程序集(jar包)。它允许用户对给定的字符串进行...