-
大小: 10KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-07
- 語言: Java
- 標簽:
資源簡介
RSA與AES混合加密算法的實現(xiàn)http://blog.csdn.net/jkxqj/article/details/25228707

代碼片段和文件信息
import?java.security.Key;
import?java.security.SecureRandom;
import?javax.crypto.Cipher;
import?javax.crypto.KeyGenerator;
import?javax.crypto.SecretKey;
import?javax.crypto.SecretKeyFactory;
import?javax.crypto.spec.DESKeySpec;
import?javax.crypto.spec.SecretKeySpec;
public?abstract?class?AESCoder?extends?Coder?{
/**
?*?ALGORITHM?算法?
?*?可替換為以下任意一種算法,同時key值的size相應(yīng)改變。
?*?DES?????????? key?size?must?be?equal?to?56
?*?DESede(TripleDES)? key?size?must?be?equal?to?112?or?168
?*?AES?????????? key?size?must?be?equal?to?128?192?or?256but?192?and?256?bits?may?not?be?available
?*?Blowfish????? key?size?must?be?multiple?of?8?and?can?only?range?from?32?to?448?(inclusive)
?*?RC2?????????? key?size?must?be?between?40?and?1024?bits
?*?RC4(ARCFOUR)? key?size?must?be?between?40?and?1024?bits
?*?在Key?toKey(byte[]?key)方法中使用下述代碼
?*?SecretKey?secretKey?=?new?SecretKeySpec(key?ALGORITHM);替換
?*?DESKeySpec?dks?=?new?DESKeySpec(key);
?*?SecretKeyFactory?keyFactory?=?SecretKeyFactory.getInstance(ALGORITHM);
?*?SecretKey?secretKey?=?keyFactory.generateSecret(dks);
?*/
public?static?final?String?ALGORITHM?=?“AES“;
/**
?*?轉(zhuǎn)換密鑰
?*?
?*?@param?key
?*?@return
?*?@throws?Exception
?*/
private?static?Key?toKey(byte[]?key)?throws?Exception?{
/*
?*? DESKeySpec?dks?=?new?DESKeySpec(key);
SecretKeyFactory?keyFactory?=?SecretKeyFactory.getInstance(ALGORITHM);
SecretKey?secretKey?=?keyFactory.generateSecret(dks);
??????*/
//?當使用其他對稱加密算法時,如AES、Blowfish等算法時,用下述代碼替換上述三行代碼
SecretKey?secretKey?=?new?SecretKeySpec(key?ALGORITHM);
return?secretKey;
}
/**
?*?解密
?*?
?*?@param?data
?*?@param?key
?*?@return
?*?@throws?Exception
?*/
public?static?byte[]?decrypt(byte[]?data?String?key)?throws?Exception?{
Key?k?=?toKey(decryptbase64(key));
Cipher?cipher?=?Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE?k);
return?cipher.doFinal(data);
}
/**
?*?加密
?*?
?*?@param?data
?*?@param?key
?*?@return
?*?@throws?Exception
?*/
public?static?byte[]?encrypt(byte[]?data?String?key)?throws?Exception?{
Key?k?=?toKey(decryptbase64(key));
Cipher?cipher?=?Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE?k);
return?cipher.doFinal(data);
}
/**
?*?生成密鑰
?*?
?*?@return
?*?@throws?Exception
?*/
public?static?String?initKey()?throws?Exception?{
return?initKey(null);
}
/**
?*?生成密鑰
?*?
?*?@param?seed
?*?@return
?*?@throws?Exception
?*/
public?static?String?initKey(String?seed)?throws?Exception?{
SecureRandom?secureRandom?=?null;
if?(seed?!=?null)?{
secureRandom?=?new?SecureRandom(decryptbase64(seed));
}?else?{
secureRandom?=?new?SecureRandom();
}
KeyGenerator?kg?=?KeyGenerator.getInstance(ALGORITHM);
kg.init(secureRandom);
SecretKey?secretKey?=?kg.generateKey();
return?encryptbase64(secretKey.getEncoded());
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????301??2014-05-07?16:32??RSAwithAES\.classpath
?????文件????????386??2014-05-07?16:32??RSAwithAES\.project
?????文件????????629??2014-05-07?16:32??RSAwithAES\.settings\org.eclipse.jdt.core.prefs
?????文件???????2002??2014-05-07?16:55??RSAwithAES\bin\AESCoder.class
?????文件???????2121??2014-05-07?16:54??RSAwithAES\bin\Coder.class
?????文件???????4949??2014-05-07?16:54??RSAwithAES\bin\RSACoder.class
?????文件???????2353??2014-05-07?16:55??RSAwithAES\bin\RSAwithAESTest.class
?????文件???????3055??2014-05-07?16:55??RSAwithAES\src\AESCoder.java
?????文件???????2162??2014-05-07?15:46??RSAwithAES\src\Coder.java
?????文件???????6324??2014-05-07?16:24??RSAwithAES\src\RSACoder.java
?????文件???????1580??2014-05-07?16:55??RSAwithAES\src\RSAwithAESTest.java
?????目錄??????????0??2014-05-07?16:56??RSAwithAES\.settings
?????目錄??????????0??2014-05-07?16:56??RSAwithAES\bin
?????目錄??????????0??2014-05-07?16:56??RSAwithAES\src
?????目錄??????????0??2014-05-07?16:56??RSAwithAES
-----------?---------??----------?-----??----
????????????????25862????????????????????15
評論
共有 條評論