2012-02-15 50 views
1

我解密zip流時遇到了一個奇怪的問題。Java AES解密帶有錯誤標題的zip文件

我解密給定的流之後,除了8個字節的頭之外,我有完全相同的字節數組。

它應該是50 4B 03 04(根據Zip規範),但我有所不同。

當我在c#中解密相同的流時,頭部是正確的。我使用RijndaelManaged,模式CBC,填充ZeroBytePadding,並且塊大小= 128

在java中,我使用AES/CBC/NoPadding block size = 128來解密。

我相信原因是填充,但我不明白爲什麼字節的其餘部分是正確的。

有人可以解釋給我嗎?

感謝了很多。

+0

你在解密時使用了什麼初始化向量?如果你不知道IV是什麼,那是你的問題。 – erickson 2012-02-15 20:58:23

+0

你是那麼對。原因是錯誤的IV。非常感謝。愛的計算器。它讓人更開心 – nixspirit 2012-02-16 04:29:32

回答

2

在CBC模式下,填充模式應該隻影響消息的最後幾個字節,而不是第一個字節(即從ZeroBytePadding到NoPadding,最後可能會增加一些0字節)。

如果您的第一個塊不同(但其餘匹配),最可能的原因是加密和解密中的不同初始化向量。檢查這個。

+0

你是那麼對。原因是錯誤的IV。非常感謝。 – nixspirit 2012-02-16 04:28:30