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);