【发布时间】:2010-10-24 18:19:54
【问题描述】:
我在 java 中使用 AES/CBC/PKCS5Padding 填充标准,而我的朋友在 c#.NET 中使用 PKCS7 标准 如果我的朋友使用 AES 加密数据并将密钥发送给我,那么我可以解密它。
但是,如果我的数据长度增加超过 2920 字节,那么如果我在 c#.NET 中加密数据并在 java 中解密数据,那么我的解密将无法正常工作。 它给了我以下错误。
"javax.crypto.IllegalBlockSizeException: 使用填充密码解密时输入长度必须是 16 的倍数"
谢谢 粑粑
【问题讨论】:
-
谷歌搜索“使用填充密码解密时输入长度必须是 16 的倍数”给出了很多答案。
-
添加了 C# 标记——这听起来像是在 C# 中不刷新缓冲区的问题,而您随后在 Java 中看到了这种问题。您还可以通过使用(通常更安全)CTR 模式来解决整个填充问题。
标签: c# java encryption