public class AESUtil {
/**
* AES加密
*
*/
public static String encrypt(String keyStr, String plainText) {
try {
Key key = generateKey(keyStr);
Cipher cipher = Cipher.getInstance(AES_TYPE);
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypt = cipher.doFinal(plainText.getBytes());
return new String(Base64.encodeBase64(encrypt));
} catch (Exception e) {
log.error("AES encrypt error: {}", e.getMessage());
e.printStackTrace();
return null;
}
}
private static Key generateKey(String key) {
return new SecretKeySpec(key.getBytes(), "AES");
}
/**
* AES解密
*/
public static String decrypt(String keyStr, String encryptData) {
try {
Key key = generateKey(keyStr);
Cipher cipher = Cipher.getInstance(AES_TYPE);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decrypt = cipher.doFinal(Base64.decodeBase64(encryptData));
return new String(decrypt);
} catch (Exception e) {
log.error("AES decrypt error: {}", e.getMessage());
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String key = "zSj8eakp4NzSj8eakp4Nwert";
System.out.println("加密结果"+encrypt(key,"13312341234"));
System.out.println("解密结果"+decrypt(key,"QkYW9759n/KRaIeJN6vlVA=="));
}
}
这个秘钥 key 有要求
密钥的长度可以使用128位、192位或256位 对应 128/8=16,192/8=24,256/8=32位,
'zSj8eakp4NzSj8eakp4Nwert' 这是24位 ;ddd 这是 3位
如果密钥要不是这样,就用‘空格’自动补全。所以在线在线AES加密解密 输入密码不满足位数,但是可以加密,代码执行报错,你需要将代码秘钥用空格补全
版权声明:本文为wy_2_7原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。