des加密介绍
des是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。des加密算法出自ibm的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为des使用56位密钥,以现代计算能力,24小时内即可被破解。 虽然如此,在某些简单应用中,我们还是可以使用des加密算法,本文简单讲解des的java实现
。注意:des加密和解密过程中,密钥长度都必须是8的倍数
packageutil;
importjava.security.securerandom;
importjavax.crypto.spec.deskeyspec;
importjavax.crypto.secretkeyfactory;
importjavax.crypto.secretkey;
importjavax.crypto.cipher;
publicclassdes{
publicdes(){
}
//测试
publicstaticvoidmain(stringargs[]){
//待加密内容
stringstr="测试内容";
//密码,长度要是8的倍数
stringpassword=
"9588028820109132570743325311898426347857298773549468758875018579537757772163084478873699447306034466200616411960574122434059469100235892702736860872901247123456";
byte[]result=des.encrypt(str.getbytes(),password);
system.out.println("加密后:"+newstring(result));
//直接将如上内容解密
try{
byte[]decryresult=des.decrypt(result,password);
system.out.println("解密后:"+newstring(decryresult));
}catch(exceptione1){
e1.printstacktrace();
/**
*加密
*@paramdatasourcebyte[]
*@parampasswordstring
*@returnbyte[]
*/
publicstaticbyte[]encrypt(byte[]datasource,stringpassword){
securerandom random=new securerandom();
deskeyspec deskey=new deskeyspec(password.getbytes());
//创建一个密匙工厂,然后用它把deskeyspec转换成
secretkeyfactory keyfactory=secretkeyfactory.getinstance("des");
secretkey securekey=keyfactory.generatesecret(deskey);
//cipher对象实际完成加密操作
ciphercipher=cipher.getinstance("des");
//用密匙初始化cipher对象
cipher.init(cipher.encrypt_mode,securekey,random);
//现在,获取数据并加密
//正式执行加密操作
returncipher.dofinal(datasource);
}catch(throwablee){
e.printstacktrace();
returnnull;
*解密
*@paramsrcbyte[]
*@throwsexception
publicstaticbyte[]decrypt(byte[]src,stringpassword)throwsexception{
//des算法要求有一个可信任的随机数源
secure random random=newsecurerandom();
//创建一个deskeyspec对象
deskeyspecdeskey=newdeskeyspec(password.getbytes());
//创建一个密匙工厂
secretkeyfactorykeyfactory=secretkeyfactory.getinstance("des");
//将deskeyspec对象转换成secretkey对象
//cipher对象实际完成解密操作
cipher cipher=cipher.getinstance("des");
cipher.init(cipher.decrypt_mode,securekey,random);
//真正开始解密操作
returncipher.dofinal(src);