package cn.emay.sdk.util;
|
|
import javax.crypto.Cipher;
|
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.SecretKeySpec;
|
|
/**
|
* AES加解密工具
|
*
|
* @author Frank
|
*
|
*/
|
public class AES {
|
|
public final static String ALGORITHM_AEPP = "AES/ECB/PKCS5Padding";
|
|
/**
|
* AES加密
|
*
|
* @param content
|
* 内容
|
* @param password
|
* 密钥
|
* @param algorithm
|
* 算法
|
* @return 加密后数据
|
*/
|
public static byte[] encrypt(byte[] content, byte[] password, String algorithm) {
|
if (content == null || password == null)
|
return null;
|
try {
|
Cipher cipher = null;
|
if (algorithm.endsWith("PKCS7Padding")) {
|
cipher = Cipher.getInstance(algorithm, "BC");
|
} else {
|
cipher = Cipher.getInstance(algorithm);
|
}
|
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(password, "AES"));
|
return cipher.doFinal(content);
|
} catch (Exception e) {
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
/**
|
* AES解密
|
*
|
* @param content
|
* 加密内容
|
* @param password
|
* 密钥
|
* @param algorithm
|
* 算法
|
* @return 解密后数据
|
*/
|
public static byte[] decrypt(byte[] content, byte[] password, String algorithm) {
|
if (content == null || password == null)
|
return null;
|
try {
|
Cipher cipher = null;
|
if (algorithm.endsWith("PKCS7Padding")) {
|
cipher = Cipher.getInstance(algorithm, "BC");
|
} else {
|
cipher = Cipher.getInstance(algorithm);
|
}
|
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(password, "AES"));
|
byte[] bytes = cipher.doFinal(content);
|
return bytes;
|
} catch (Exception e) {
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
/**
|
* AES加密
|
*
|
* @param content
|
* 内容
|
* @param password
|
* 密钥
|
* @param algorithm
|
* 算法
|
* @param ivStr
|
* 向量
|
* @return 加密后数据
|
*/
|
public static byte[] encrypt(byte[] content, byte[] password, byte[] ivStr, String algorithm) {
|
if (content == null || password == null)
|
return null;
|
try {
|
Cipher cipher = null;
|
if (algorithm.endsWith("PKCS7Padding")) {
|
cipher = Cipher.getInstance(algorithm, "BC");
|
} else {
|
cipher = Cipher.getInstance(algorithm);
|
}
|
IvParameterSpec iv = new IvParameterSpec(ivStr);
|
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(password, "AES"), iv);
|
return cipher.doFinal(content);
|
} catch (Exception e) {
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
/**
|
* AES解密
|
*
|
* @param content
|
* 加密内容
|
* @param password
|
* 密钥
|
* @param algorithm
|
* 算法
|
* @param ivStr
|
* 向量
|
* @return 解密后数据
|
*/
|
public static byte[] decrypt(byte[] content, byte[] password, byte[] ivStr, String algorithm) {
|
if (content == null || password == null)
|
return null;
|
try {
|
Cipher cipher = null;
|
if (algorithm.endsWith("PKCS7Padding")) {
|
cipher = Cipher.getInstance(algorithm, "BC");
|
} else {
|
cipher = Cipher.getInstance(algorithm);
|
}
|
IvParameterSpec iv = new IvParameterSpec(ivStr);
|
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(password, "AES"), iv);
|
byte[] bytes = cipher.doFinal(content);
|
return bytes;
|
} catch (Exception e) {
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
}
|