有人遇到过 InputStream 转 byte[]再转回 InputStream 导致 3des 解密报错的情况么=。=

2019-03-13 18:16:08 +08:00
 masonnpe

会报 javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher

1744 次点击
所在节点    Java
2 条回复
boris1993
2019-03-13 18:18:26 +08:00
错误说 输入长度必须是 8 的整数倍

以此为线索搜索一下?
cnhongwei
2019-03-14 09:29:25 +08:00
3des 加密前不是密钥长度时,会做 padding。所以加密后数据一般比加密前数据长。所以你的错误有两种可能,1 种是加密算法有错误,取加密结果时,没有取到对应的字节数,另 1 种就是在 byte[]和 inputstream 转换过程中有 bug,造成数据不全。你在每个过程中打印一下数据长度就清楚了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/544252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX