packagecom.lj.test;importjava.io.UnsupportedEncodingException;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.KeyGenerator;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;public classAES {/*** 加密
*
*@paramcontent 需要加密的内容
*@parampassword 加密密码
*@return
*/
public static byte[] encrypt(String content, String password) {try{
KeyGenerator kgen= KeyGenerator.getInstance("AES");
kgen.init(128, newSecureRandom(password.getBytes()));
SecretKey secretKey=kgen.generateKey();byte[] enCodeFormat =secretKey.getEncoded();
SecretKeySpec key= new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher= Cipher.getInstance("AES");//创建密码器
byte[] byteContent = content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE, key);//初始化
byte[] result =cipher.doFinal(byteContent);return result; //加密
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}catch(NoSuchPaddingException e) {
e.printStackTrace();
}catch(InvalidKeyException e) {
e.printStackTrace();
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}catch(IllegalBlockSizeException e) {
e.printStackTrace();
}catch(BadPaddingException e) {
e.printStackTrace();
}return null;
}/**解密
*@paramcontent 待解密内容
*@parampassword 解密密钥
*@return
*/
public static byte[] decrypt(byte[] content, String password) {try{
KeyGenerator kgen= KeyGenerator.getInstance("AES");
kgen.init(128, newSecureRandom(password.getBytes()));
SecretKey secretKey=kgen.generateKey();byte[] enCodeFormat =secretKey.getEncoded();
SecretKeySpec key= new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher= Cipher.getInstance("AES");//创建密码器
cipher.init(Cipher.DECRYPT_MODE, key);//初始化
byte[] result =cipher.doFinal(content);return result; //加密
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}catch(NoSuchPaddingException e) {
e.printStackTrace();
}catch(InvalidKeyException e) {
e.printStackTrace();
}catch(IllegalBlockSizeException e) {
e.printStackTrace();
}catch(BadPaddingException e) {
e.printStackTrace();
}return null;
}/**将二进制转换成16进制
*@parambuf
*@return
*/
public static String parseByte2HexStr(bytebuf[]) {
StringBuffer sb= newStringBuffer();for (int i = 0; i < buf.length; i++) {
String hex= Integer.toHexString(buf[i] & 0xFF);if (hex.length() == 1) {
hex= '0' +hex;
}
sb.append(hex.toUpperCase());
}returnsb.toString();
}/**将16进制转换为二进制
*@paramhexStr
*@return
*/
public static byte[] parseHexStr2Byte(String hexStr) {if (hexStr.length() < 1)return null;byte[] result = new byte[hexStr.length()/2];for (int i = 0;i< hexStr.length()/2; i++) {int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);
result[i]= (byte) (high * 16 +low);
}returnresult;
}public static voidmain(String[] args) {
String str= "asd";byte[] encryptResult = AES.encrypt(str, "1111");
String encrypt_cookie= AES.parseByte2HexStr(encryptResult); //11,浜琋A9999
System.out.println("加密后:" +encrypt_cookie);byte[] decryptFrom = AES.parseHexStr2Byte(encrypt_cookie); //"66CD76792D0DBCFE62F39D9E89D8E5F8"
byte[] decrypt_cookie = AES.decrypt(decryptFrom, "1111");
System.out.println("加密后:" + newString(decrypt_cookie));
}
}