加密工具类
需要时自拷
public class AESUtils {
private final String CIPHERMODEPADDING = "AES/CBC/PKCS5Padding";//加密编码
private static String ivParameter = "companyrunjinkej";//偏移量可更改 必须为16位
private String sKey = "runjinkejcompany";// 密钥必须为16位,可更改为自己的密钥
private SecretKeySpec skforAES = null;
private byte[] iv = ivParameter.getBytes();
private IvParameterSpec IV;
private static AESUtils instance = null;
//获取实例
public static AESUtils getInstance() {
if (instance == null) {
synchronized (AESUtils.class) {
if (instance == null) {
instance = new AESUtils();
}
}
}
return instance;
}
public AESUtils() {
byte[] skAsByteArray;
try {
skAsByteArray = sKey.getBytes("ASCII");
skforAES = new SecretKeySpec(skAsByteArray, "AES");//转换为AES专用密钥
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
IV = new IvParameterSpec(iv);
}
/**
* 加密
* @param plaintext 加密明文
* @return
*/
public byte[] encrypt(String plaintext) {
return encrypt(CIPHERMODEPADDING, skforAES, IV, plaintext.getBytes());
}
/**
* 解密
* @param ciphertext 解密密文
* @return
*/
public String decrypt(byte[] ciphertext) {
return new String(decrypt(CIPHERMODEPADDING, skforAES, IV, ciphertext));
}
private byte[] encrypt(String cmp, SecretKey sk, IvParameterSpec IV, byte[] msg) {
try {
Cipher c = Cipher.getInstance(cmp);
c.init(Cipher.ENCRYPT_MODE, sk, IV);
return c.doFinal(msg);
} catch (Exception nsae) {
}
return null;
}
private byte[] decrypt(String cmp, SecretKey sk, IvParameterSpec IV, byte[] ciphertext) {
try {
Cipher c = Cipher.getInstance(cmp);
c.init(Cipher.DECRYPT_MODE, sk, IV);
return c.doFinal(ciphertext);
} catch (Exception nsae) {
}
return null;
}
}
测试类
public class testAes {
public static void main(String[] args) {
AESUtils instance = AESUtils.getInstance();
byte[] encrypt = instance.encrypt("国际儿童节");//加密
System.out.println("加密后:"+new String(encrypt));
String decrypt = instance.decrypt(encrypt);//解密
System.out.println("解密后:"+decrypt);
}
}