遇到javax.crypto.IllegalBlockSizeException怎么解决?java报错
我在运行一个解密的样例代码时出现 IllegalBlockSizeException
的错误。
Encryption code:
Cipher aes = Cipher.getInstance("AES");
aes.init(Cipher.ENCRYPT_MODE, generateKey());
byte[] ciphertext = aes.doFinal(rawPassword.getBytes());
Decryption code :
Cipher aes = Cipher.getInstance("AES");
aes.init(Cipher.DECRYPT_MODE, generateKey());
byte[] ciphertext = aes.doFinal(rawPassword.getBytes());
原因是什么,为什么会发生异常,以及下面到底发生了什么。如果有人能帮忙?提前谢谢
运行了你的代码分析了错误信息,运行会出现下面的错误提示
IllegalBlockSizeException ( Input length must be multiple of 16 when ...)
在解密过程中,如果输入数据不是块大小的倍数(AES为16字节),则只能获得非法的BlockSizeException。 如果密钥或数据无效(但长度正确),则会出现BadPaddingException,因为PKCS#5填充在明文中是错误的。偶尔,填充会出现正确的机会,你不会有任何例外。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。