加密工具類
需要時自拷
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);
}
}