提供一个在线工具地址:
直接贴代码吧.....
PKCS5/PKCS7都能解
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
@Component
@Slf4j
public class AESUtil {
private static final String secretKey = "6e5Aab9ACBFS0G96G3078840D4Adc8C6";
private static final String secretIV = "34448433020FdG6b";
public static String encrypt(String content) {
try {
SecretKeySpec skey = new SecretKeySpec(secretKey.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");// "算法/加密/填充"
IvParameterSpec iv = new IvParameterSpec(secretIV.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, skey, iv);//初始化加密器
byte[] encrypted = cipher.doFinal(content.getBytes("UTF-8"));
return byteArrayToHexStr(encrypted); // 加密
} catch (Exception e) {
log.error("AESUtil encrypt error: {}", e);
}
return null;
}
public static String decrypt(String encryptStr) {
try{
byte[] encryptArr = hexStrToByteArray(encryptStr);
SecretKeySpec skey = new SecretKeySpec(secretKey.getBytes(), "AES");
IvParameterSpec iv = new IvParameterSpec(secretIV.getBytes());
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");// 创建密码器
cipher.init(Cipher.DECRYPT_MODE, skey, iv);// 初始化解密器
byte[] result = cipher.doFinal(encryptArr);
return new String(result, "UTF-8"); // 解密
} catch (Exception e) {
log.error("AESUtil decrypt error: {}", e);
}
return null;
}
private static final char[] HEX_CHARS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
/**
* 十六进制转化为二进制
*/
public static byte[] hexStrToByteArray(String hexString) {
if (hexString == null) {
return null;
}
if (hexString.length() == 0) {
return new byte[0];
}
byte[] byteArray = new byte[hexString.length() / 2];
for (int i = 0; i < byteArray.length; i++) {
String subStr = hexString.substring(2 * i, 2 * i + 2);
byteArray[i] = ((byte) Integer.parseInt(subStr, 16));
}
return byteArray;
}
/**
* 二进制转化为十六进制
*/
public static String byteArrayToHexStr(byte[] byteArray) {
if (byteArray == null) {
return null;
}
char[] hexChars = new char[byteArray.length * 2];
for (int j = 0; j < byteArray.length; j++) {
int v = byteArray[j] & 0xFF;
hexChars[j * 2] = HEX_CHARS[v >>> 4];
hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
}
return new String(hexChars);
}
/*public static void main(String [] args) throws Exception {
String encrypt = encrypt("123123123");
log.info("encrypt: {}", encrypt);
String decrypt = decrypt(encrypt);
log.info("decrypt: {}", decrypt);
}*/
}