javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
时间: 2023-10-25 12:35:11 浏览: 456
这个异常通常是因为在使用对称加密算法(如AES)进行解密时,输入的密文长度不是16的倍数,而且所使用的Cipher对象采用了填充模式(如PKCS5Padding)。在这种情况下,解密操作会抛出IllegalBlockSizeException异常。
解决方法是在加密和解密时保证输入的数据长度为16的倍数。如果输入数据长度不足16的倍数,需要在数据末尾填充一些字节,使其长度达到16的倍数。常用的填充方式有PKCS5Padding和ISO10126Padding等。在Java中可以使用javax.crypto.Cipher类的doFinal()方法实现加解密。在加密时,如果输入的数据长度不是16的倍数,需要使用Cipher类的update()方法处理部分数据,然后再使用doFinal()方法处理最后一部分数据并进行填充。在解密时,同样需要先使用update()方法处理部分数据,最后使用doFinal()方法进行最后一部分数据的解密和填充处理。
相关问题
报错javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher 的解决方法
引用中提到,当使用AES解密时,报错javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher的意思是解密字符串的数组长度必须是16的倍数。所以解决这个问题的方法就是确保传入解密方法的字符串长度是16的倍数。你可以在加密之前,将原始字符串进行填充,使其长度符合要求。在解密之前,也需要确保解密字符串的长度是16的倍数。具体的实现方法可以参考代码中的示例中的相关部分。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* [javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padd](https://blog.csdn.net/weixin_45915335/article/details/124152930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
- *2* [javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with pad](https://blog.csdn.net/qq_30624649/article/details/114937740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
- *3* [java AES 加密,报javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when ...](https://blog.csdn.net/qq_36205206/article/details/119993785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher是AES加密解密的报错异常。这个异常的意思是在使用AES解密时,解密的字符串的长度必须是8的倍数。通常,这种异常是由于解密的数据长度不正确导致的。
可能的原因是在解密过程中,传入的密文长度不是8的倍数。解决这个问题的方法是确保在解密之前,对密文进行正确的填充操作,使其长度为8的倍数。常用的填充方式包括PKCS5Padding和PKCS7Padding。
阅读全文