packagecom.heyang.util;importjava.security.Key;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Hex;/*** AES算法加密解密实用工具类
* 说明:
* 作者:何杨(heyang78@gmail.com)
* 创建时间:2010-11-29 上午11:19:11
* 修改时间:2010-11-29 上午11:19:11*/publicclassAESSecurityUtil{//加密方法privatestaticfinalString Algorithm="AES";//进行加密解密的密钥privatestaticfinalString Key="03a53dfc257fe1b0996626a5e2e2210692936bd16cc60f37211cbeef9353e268";/*** 取得解密后的字符串
*
* 说明:
*@paramencryptArr
*@return* 创建时间:2010-12-1 下午03:33:31*/publicstaticString getDecryptString(byte[] encryptArr){try{
Cipher cp=Cipher.getInstance(Algorithm);
cp.init(Cipher.DECRYPT_MODE, getKey());byte[] arr=cp.doFinal(encryptArr);returnnewString(arr);
}catch(Exception ex){
System.out.println("无法进行解密,原因是"+ex.getMessage());returnnull;
}
}/*** 取得加密后的字节数组
*
* 说明:
*@paramoriginalString
*@return* 创建时间:2010-12-1 下午03:33:49*/publicstaticbyte[] getEncryptByteArray(String originalString){try{
Cipher cp=Cipher.getInstance(Algorithm);
cp.init(Cipher.ENCRYPT_MODE, getKey());returncp.doFinal(originalString.getBytes());
}catch(Exception ex){
System.out.println("无法进行加密,原因是"+ex.getMessage());returnnull;
}
}/*** 取得密钥数组
*
* 说明:
*@return*@throwsException
* 创建时间:2010-12-1 下午03:31:08*/privatestaticbyte[] initKey()throwsException{
KeyGenerator kg=KeyGenerator.getInstance(Algorithm);
kg.init(256);
SecretKey sk=kg.generateKey();returnsk.getEncoded();
}/*** 取得字符串形式的密钥
*
* 说明:
*@return*@throwsException
* 创建时间:2010-12-1 下午03:31:36*/publicstaticString initKeyHex()throwsException{returnnewString(Hex.encodeHex(initKey()));
}/*** 取得密钥
*
* 说明:
*@return*@throwsException
* 创建时间:2010-12-1 下午03:33:17*/privatestaticKey getKey()throwsException{byte[] arr=Hex.decodeHex(Key.toCharArray());returnnewSecretKeySpec(arr,Algorithm);
}publicstaticvoidmain(String[] args)throwsException{//System.out.println(initKeyHex());String str="Hello!World 你好!世界。";byte[] arr=AESSecurityUtil.getEncryptByteArray(str);
System.out.print("AES加密后的结果为:");for(byteb:arr){
System.out.print(b);
}
System.out.println();
String str1=AESSecurityUtil.getDecryptString(arr);
System.out.println("AES解密后的字符串为:"+str1);
}
}