java AES解密异常 Input length must be multiple of 16 when decrypting with padded cipher
时间: 2023-12-08 13:39:19 浏览: 154
基于Misty1算法的加密软件
该异常通常是由于加密数据的长度不是16的倍数导致的。在使用AES解密时,加密数据的长度必须是16的倍数,否则就会出现该异常。为了解决这个问题,可以在加密数据之前将其填充到16的倍数长度,然后再进行加密。常用的填充方式有PKCS5Padding和PKCS7Padding两种。
以下是一个Java AES解密的例子,其中使用了PKCS5Padding填充方式:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AESUtil {
private static final String ALGORITHM = "AES/ECB/PKCS5Padding";
public static String decrypt(String encryptedData, String key) throws Exception {
byte[] keyBytes = key.getBytes();
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedData);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
}
}
```
阅读全文