2016-12-04 27 views
0

ファイルを保存し、AES暗号化を適用するための暗号化ロジックを作成しています。初期化ベクトルは非表示にする必要がありますか?

実際、暗号化ロジックを自分で作成するのではなく、オンライン暗号化でAES暗号化を実装していますので、IVの存在を認識できませんでした。

しかし、苦労して、私は関数RijndaelManaged.GenerateIV()を見つけました。

私は自動生成されたIVは、ファイルを復号化するために、コピー先のどこかの場所に保存する必要がありますが、暗号化キーのように非表示にする必要があります。

「plain」IVをファイルの後ろに追加するのは大丈夫ですか?そうでない場合は、どのようにして保存し、IVをより適切に使用できますか?

+0

[AESで暗号化されたデータベースエントリのキーと初期化ベクトルの導出方法は?](http://stackoverflow.com/questions/5193140/how-should-i-derive-the-key-and) - 初期化 - ベクトル - 私のエース - 暗号化されたdatab) –

答えて

1

initialization vector(IV)は、鍵で暗号化された各平文のためユニークランダムでなければなりません。ただし、秘密にする必要はありません。 IVを暗号文に付加して平文で送信することができます。

IVの理由は、最初のブロックの暗号化が一意であることを保証するためです。たとえば、AES/CBCを使用して同じキーで同じメッセージを暗号化し、IVを指定しなかった場合、出力は同じになります。 IVを導入することは、暗号テキストの最初のブロック(16バイト)が一意であり、メッセージ暗号テキスト全体が異なることを意味する(CBC動作モードのため)。詳細については、Wikipediaの記事Block Cipher Modes of Operationを参照してください。

関連する問題