* @param key 加密key
* @return
*/
public static String encryptECB(String data, String key) {
if (StringUtils.isEmpty(key)) {
throw new IllegalArgumentException(“加密失败,加密key为空”);
}
SecretKeySpec aesKey = new SecretKeySpec(key.getBytes(Charset.forName(CHARSET_NAME)), ALGORITHM);
try {
Cipher cipher = Cipher.getInstance(TRANSFORM_ALGORITHM[0]);
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] encrypted = cipher.doFinal(data.getBytes(Charset.forName(CHARSET_NAME)));
// 使用Base64来包装是规避报错Input length must be multiple of 16 when decrypting with padded cipher
// 解密的字节数组必须是16的倍数
return Base64.getEncoder().encodeToString(encrypted);
} catch (Exception e) {
throw new IllegalArgumentException("加密失败: "+ e.getMessage());
}
}
/**
* AES的ECB模式解密
* @param data 待解密参数
* @param key 解密key
* @return
*/
public static String decryptECB(String data, String key) {
if (StringUtils.isEmpty(key)) {
throw new IllegalArgumentException(“解密失败,解密key为空”);
}
byte[] decode = Base64.getDecoder().decode(data.getBytes(StandardCharsets.UTF_8));
SecretKeySpec aesKey = new SecretKeySpec(key.getBytes(Charset.forName(CHARSET_NAME)), ALGORITHM);
try {
Cipher cipher = Cipher.getInstance(TRANSFORM_ALGORITHM[0]);
cipher.init(Cipher.DECRYPT_MODE, aesKey);
return new String(cipher.doFinal(decode));
} catch (Exception e) {
throw new IllegalArgumentException("解密失败: "+ e.getMessage());
}
}
/**
* AES的CBC模式加密
* @param data 要加密的数据
*