0

Rijndael を使用して、一部のドキュメントで使用される機密画像を暗号化/復号化しています。提供されたパスワードが機能すること、および運命のいたずらにより、誤ったパスワードが原因で文書の画像が破損することを絶対に確認しようとしています。ここまでに捕まえないと、たくさんの書類やお金が捨てられてしまいます。

私の現在の計画は、画像とともに保存する MD5 チェックサムを作成することです。復号化されたストリームの MD5 が元のストリームと異なる場合、パスワードが間違っていたことがわかります。ただし、テストでは、パスワードが正しくないと例外がスローされるようです。

それは100%真実ですか?チェックサムをなくして、例外をキャッチすることはできますか?

4

2 に答える 2

4

.Netのすべての対称鍵アルゴリズムでは、パディング情報(通常はPKCS7)を含む最後のブロックで検証が行われます。最後に復号化されたブロックに有効なパディング情報が含まれていない場合、データは「不良」(またはキーは「不良」)であると見なされます。暗号連鎖ブロックモードの場合、有効なパディング情報形式と一致する偶発的な衝突の可能性が非常に低いため、この方法はかなり優れています。ECBモードの場合は状況が変わりますが、ECBモードはとにかく壊れているため、使用しないでください。

多くのアプリケーションは、データの先頭に「マジック」番号とテキストを使用して、復号化されたコンテンツ形式を検証します。100%の防弾精度では、おそらく独自のHMACをデータに追加する必要があります。フォーマットを制御できる場合は、暗号化されたデータに署名することを強くお勧めします。

于 2009-10-12T20:38:21.977 に答える
2

暗号化はパスワードを使用せず、キーを使用します。キーが間違っている場合、復号化によって自動的に例外が発生することはありません。つまり、暗号化されたデータからキーが抽出される可能性があり、暗号化が無意味になります。復号化は常に結果を生成しますが、キーが正しいものでない限り、ランダムなガベージになります。

(Remusが指摘したように、最後のブロックのパディングを使用して誤ったデータをキャッチできますが、一部のファイルはパディングをまったく必要とせず、誤ったデータが正しいパディングのように見える場合があります。)

どこで例外が発生しますか?復号化されたデータを画像として読み込もうとしたときですか?その場合、ランダムデータが画像としてロード可能なものを形成する可能性がわずかにあるため、キーが正しいかどうかを確認するための100%安全な方法としてそれを信頼することはできません。

元のデータのMD5チェックサムを暗号化されたデータと一緒に保存することもお勧めできません。これは、暗号化されていない元のデータに関する情報があり、それを使用してキーを解読できることを意味します。

于 2009-10-12T20:40:50.350 に答える