資源簡介
本組代碼采用標準AES算法(基礎(chǔ)算法引用ElAES.pas,感謝作者),代碼支持AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密鑰長度128/192/256bit,密鑰0填充,Delphi與JAVA互相加解密。

代碼片段和文件信息
package?aes;
import?java.io.UnsupportedEncodingException;
import?java.security.InvalidAlgorithmParameterException;
import?java.security.InvalidKeyException;
import?java.security.NoSuchAlgorithmException;
import?javax.crypto.BadPaddingException;
import?javax.crypto.Cipher;
import?javax.crypto.IllegalBlockSizeException;
import?javax.crypto.NoSuchPaddingException;
import?javax.crypto.spec.IvParameterSpec;
import?javax.crypto.spec.SecretKeySpec;
public?class?AESTest?{
public?static?void?main(String?args[])?throws?UnsupportedEncodingException?InvalidAlgorithmParameterException{
System.out.println(System.getProperty(“file.encoding“));
//加密內(nèi)容
String?content?=?“密碼學中的高級加密標準(AdvancedEncryptionStandard,AES)。“;
//String?content?=?“test123456“;
//為與Delphi編碼統(tǒng)一,將字符轉(zhuǎn)為UTF8編碼(其他語言也相同)
//String?ss=new?String(content.getBytes()“UTF-8“);
//密鑰
String?password?=?“1234567890123456“;
????????System.out.println(“加密前:“?+?content);
????????byte[]?encryptResult?=?encrypt(content?password32);?//16位密鑰長度128位、24位密鑰長度192、32位密鑰長度256(在delphi中對應(yīng)kb128、kb192、快播56)
????????System.out.println(“加密后:“?+?parseByte2HexStr(encryptResult));//將加密后編碼轉(zhuǎn)為16進制編碼
?
????????byte[]?decryptResult?=?decrypt(encryptResultpassword32);
????????System.out.println(“解密后:“?+?new?String(decryptResult));????
}
????/**
?????*?加密
?????*?
?????*?@param?content?需要加密的內(nèi)容
?????*?@param?password??加密密碼
?????*?@param?keySize?密鑰長度162432
?????*?@return
?????*?@throws?UnsupportedEncodingException?
?????*?@throws?InvalidAlgorithmParameterException?
?????*/
????public?static?byte[]?encrypt(String?content?String?password?int?keySize)?throws?UnsupportedEncodingException?InvalidAlgorithmParameterException?{
????????????try?{??????????????????????????????
???????????? //密鑰長度不夠用0補齊。
???????? SecretKeySpec?key?=?new?SecretKeySpec(ZeroPadding(password.getBytes()?keySize)?“AES“);
???????? //定義加密算法AES、算法模式ECB、補碼方式PKCS5Padding
????????????????//Cipher?cipher?=?Cipher.getInstance(“AES/ECB/PKCS5Padding“);
???????? //定義加密算法AES?算法模式CBC、補碼方式PKCS5Padding
????????????????Cipher?cipher?=?Cipher.getInstance(“AES/CBC/PKCS5Padding“);
????????????????//CBC模式模式下初始向量?不足16位用0補齊
????????????????IvParameterSpec?iv?=?new?IvParameterSpec(ZeroPadding(“1234567890123456“.getBytes()16));
????????????????byte[]?byteContent?=?content.getBytes();??
????????????????//初始化加密
????????????????//ECB
????????????????//cipher.init(Cipher.ENCRYPT_MODE?key);
????????????????//CBC?
cipher.init(Cipher.ENCRYPT_MODE?keyiv);????????????????
????????????????byte[]?result?=?cipher.doFinal(byteContent);
????????????????return?result;?
????????????}?catch?(NoSuchAlgorithmException?e)?{
????????????????????e.printStackTrace();
????????????}?catch?(NoSuchPaddingException?e)?{
????????????????????e.printStackTrace();
????????????}?catch?(InvalidKeyException?e)?{
????????????????????e.printStackTrace();
????????????}?catch?(IllegalBlockSizeException?e)?{
????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-03-30?20:26??JAVA\
?????文件????????6730??2016-03-30?20:39??JAVA\AESTest.java
?????文件?????????598??2016-03-30?20:45??Readme.txt
?????目錄???????????0??2016-03-30?20:23??Delphi\
?????文件?????????274??2016-03-23?15:49??Delphi\AesTest.dpr
?????文件???????27916??2016-03-24?12:54??Delphi\AesTest.dproj
?????文件????????1201??2016-03-24?12:54??Delphi\AesTest.dproj.local
?????文件?????????155??2016-03-29?16:21??Delphi\AesTest.identcache
?????文件???????58468??2016-03-24?13:10??Delphi\AesTest.res
?????文件?????????176??2016-03-29?16:21??Delphi\AesTest.stat
?????文件??????139553??2015-08-19?09:06??Delphi\ElAES.pas
?????文件????????8654??2016-03-30?20:00??Delphi\JDAESExtend.pas
?????文件????????2589??2015-08-19?09:06??Delphi\untAES.pas
?????文件????????3809??2016-03-29?15:19??Delphi\untTest.dfm
?????文件????????3991??2016-03-30?19:50??Delphi\untTest.pas
評論
共有 條評論