IllegalBlockSizeException: last block incomplete in decryption
时间: 2023-12-15 17:30:10 浏览: 451
IllegalBlockSizeException是Java加密解密中常见的异常之一,通常是由于加密时数据块大小不符合要求导致的。而last block incomplete in decryption则表示在解密时最后一个数据块不完整,无法正确解密。这个异常通常会在使用对称加密算法时出现,例如AES、DES等。解决这个问题的方法是在加密时使用正确的数据块大小,或者在解密时捕获异常并进行相应的处理。
一种解决方法是在加密时使用正确的数据块大小,例如使用PKCS5Padding填充方式,这种方式会自动填充数据块到正确的大小。另一种方法是在解密时捕获异常并进行相应的处理,例如忽略最后一个不完整的数据块或者手动填充数据块到正确的大小。
代码示例:
```java
// 加密
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] encrypted = cipher.doFinal(plainText.getBytes("UTF-8"));
// 解密
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, iv);
try {
byte[] decrypted = cipher.doFinal(encrypted);
} catch (IllegalBlockSizeException e) {
// 处理异常
}
```
阅读全文