开发者社区> 问答> 正文

javax.crypto.IllegalBlockSizeException怎么解决?java报错

已解决

遇到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());

原因是什么,为什么会发生异常,以及下面到底发生了什么。如果有人能帮忙?提前谢谢

展开
收起
爱吃鱼的程序员 2020-05-26 10:41:02 2807 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    采纳回答

    运行了你的代码分析了错误信息,运行会出现下面的错误提示

    IllegalBlockSizeException ( Input length must be multiple of 16 when ...)

    在解密过程中,如果输入数据不是块大小的倍数(AES为16字节),则只能获得非法的BlockSizeException。 如果密钥或数据无效(但长度正确),则会出现BadPaddingException,因为PKCS#5填充在明文中是错误的。偶尔,填充会出现正确的机会,你不会有任何例外。

    2020-05-26 11:12:09
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载