2012-02-15 7 views
1

私はジップストリームを解読するときに奇妙な問題に直面した。Java AESが間違ったヘッダを持つzipファイルを解読する

私は与えられたストリームを解読した後、私はちょうど8バイトのヘッダーから離れたバイトの同じ配列を持っています。

これは50 4B 03 04(Zip仕様による)ですが、私は違ってきます。

私はc#で同じストリームを解読するとき、ヘッダが正しいです。私はRijndaelManaged、モードCBC、パディングZeroBytePadding、ブロックサイズ= 128を使用します。

Javaでは、AES/CBC/NoPaddingブロックサイズ= 128を使用して復号化します。

私は原因がパディングだと信じていますが、残りのバイトが正しい理由はわかりません。

誰かが私にそれを説明できますか?

ありがとうございました。

+0

解読中に初期化ベクトルには何を使用していますか? IVが何であるか分からなければ、それはあなたの問題です。 – erickson

+0

あなたは大変だった。原因は間違っていた。どうもありがとう。愛stackoverflow。それは人々をより幸せにします – nixspirit

答えて

2

CBCモードでは、パディングモードは最初のメッセージではなく、メッセージの最後のバイトにのみ影響します(つまり、ZeroBytePaddingからNoPaddingまで、最後に0バイトが追加される可能性があります)。

最初のブロックが異なる場合(ただし残りが一致する場合)、最も可能性の高い原因は、暗号化と復号化で異なる​​初期化ベクトルです。これをチェックして。

+0

あなたはとてもそうでした。原因は間違っていた。どうもありがとう。 – nixspirit

関連する問題