package com.yeshi.buwan.util;
|
|
import javax.crypto.*;
|
import javax.crypto.spec.SecretKeySpec;
|
import java.io.UnsupportedEncodingException;
|
import java.security.InvalidKeyException;
|
import java.security.NoSuchAlgorithmException;
|
import java.security.SecureRandom;
|
|
/**
|
* AES加密解密
|
*
|
* @author Administrator
|
*/
|
public class AESUtil {
|
|
private final static String KEY = "1234567890123456";
|
|
public static String encrypt(String content) {
|
try {
|
// KeyGenerator提供对策密钥生成器的功能,支持各种算法
|
KeyGenerator kgen = KeyGenerator.getInstance("AES");
|
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
|
secureRandom.setSeed(KEY.getBytes());
|
kgen.init(128, secureRandom);
|
// SecretKey 负责保存对称密钥
|
SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES");
|
|
// 创建密码器
|
Cipher cipher = Cipher.getInstance("AES");
|
byte[] byteContent = content.getBytes("utf-8");
|
// 初始化
|
cipher.init(Cipher.ENCRYPT_MODE, key);
|
// 加密
|
byte[] result = cipher.doFinal(byteContent);
|
return StringUtil.getBase64FromByte(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 new String();
|
}
|
|
/*
|
* 注意:解密的时候要传入byte数组 解密
|
*
|
* @param content 待解密内容
|
*
|
* @param password 解密密钥
|
*
|
* @return
|
*/
|
// public String decrypt(byte[] content, String password) {
|
public static String decrypt(String contentStr) {
|
try {
|
byte[] content = (new sun.misc.BASE64Decoder()).decodeBuffer(contentStr);
|
|
KeyGenerator kgen = KeyGenerator.getInstance("AES");
|
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
|
secureRandom.setSeed(KEY.getBytes());
|
kgen.init(128, secureRandom);
|
|
SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES");
|
// 创建密码器
|
Cipher cipher = Cipher.getInstance("AES");
|
// 初始化
|
cipher.init(Cipher.DECRYPT_MODE, key);
|
// 加密
|
byte[] result = cipher.doFinal(content);
|
return new String(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();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return new String();
|
}
|
|
public static String decrypt(byte[] contentStr, String k) {
|
try {
|
byte[] content = contentStr;
|
KeyGenerator kgen = KeyGenerator.getInstance("AES");
|
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
|
secureRandom.setSeed(k.getBytes());
|
kgen.init(128, secureRandom);
|
|
SecretKeySpec key = new SecretKeySpec(k.getBytes(), "AES");
|
// 创建密码器
|
Cipher cipher = Cipher.getInstance("AES");
|
// 初始化
|
cipher.init(Cipher.DECRYPT_MODE, key);
|
// 加密
|
byte[] result = cipher.doFinal(content);
|
return new String(result, "utf-8");
|
} 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();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return new String();
|
}
|
|
}
|