Java AES使用错误的标头解密zip文件

时间:2012-02-15 11:26:47

标签: java header zip aes

当我解密压缩流时,我遇到了一个奇怪的问题。

解密给定的流之后,除了8个字节的头之外,我有完全相同的字节数组。

它应该是50 4B 03 04(根据Zip规范),但我有所不同。

当我在c#中解密相同的流时,标头是正确的。我使用RijndaelManaged,模式CBC,填充ZeroBytePadding,块大小= 128

在java中,我使用AES / CBC / NoPadding块大小= 128来解密。

我相信原因是填充但后来我不明白为什么剩下的字节是正确的。

有人可以向我解释一下吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

在CBC模式下,填充模式应该只影响消息的最后几个字节,而不是第一个字节(即从ZeroBytePadding到NoPadding,最后可能会增加一些0字节)。

如果你的第一个块不同(但其余的匹配),最可能的原因是加密和解密中的初始化向量不同。检查一下。