我在解密zip流时遇到一个奇怪的问题。
解密给定的流后,除了头的8个字节外,我具有完全相同的字节数组。
应该是50 4B 03 04(根据Zip规范),但我有所不同。
当我在c#中解密相同的流时,标头是正确的。我使用RijndaelManaged,模式CBC,填充ZeroBytePadding和块大小= 128
在Java中,我使用AES / CBC / NoPadding块大小= 128进行解密。
我相信原因是填充,但是后来我不明白为什么其余字节是正确的。
在CBC模式下,填充模式应仅影响消息的最后一个字节,而不影响第一个字节(即,从ZeroBytePadding到NoPadding,您可能会在末尾添加一些0字节)。
如果您的第一个块不同(但其余块匹配),则最可能的原因是加密和解密中的初始化向量不同。检查一下。