AesCryptoServiceProvider.IV プロパティ

定義

対称アルゴリズムの初期化ベクター (IV) を取得または設定します。

public:
 virtual property cli::array <System::Byte> ^ IV { cli::array <System::Byte> ^ get(); void set(cli::array <System::Byte> ^ value); };
public override byte[] IV { get; set; }
member this.IV : byte[] with get, set
Public Overrides Property IV As Byte()

プロパティ値

Byte[]

初期化ベクター。

例外

初期化ベクターを null に設定しようとしました。

初期化ベクターを無効なサイズに設定しようとしました。

注釈

プロパティは IV 、いずれかのクラスの新しいインスタンス SymmetricAlgorithm を作成するとき、またはメソッドを手動で呼び出すときに、新しいランダムな値に自動的に設定されます GenerateIV 。 プロパティのサイズは、 IV 8 で割ったプロパティと BlockSize 同じである必要があります。

クラスから SymmetricAlgorithm 派生するクラスは、暗号ブロック チェーン (CBC) と呼ばれるチェーン モードを使用します。これには、データに対して暗号化変換を実行するためにキーと初期化ベクトルが必要です。 クラスの 1 つを使用して暗号化されたデータの暗号化を SymmetricAlgorithm 解除するには、プロパティとプロパティを Key 暗号化に使用されたのと IV 同じ値に設定する必要があります。

特定の秘密キー k の場合、初期化ベクトルを使用しない単純なブロック暗号は、プレーン テキストの同じ入力ブロックを同じ出力ブロックの暗号テキストに暗号化します。 プレーン テキスト ストリーム内に重複するブロックがある場合は、暗号テキスト ストリーム内に重複するブロックがあります。 許可されていないユーザーがプレーン テキストのブロックの構造について何かを知っている場合は、その情報を使用して既知の暗号テキスト ブロックを解読し、キーを回復できます。 この問題に対処するために、前のブロックからの情報が次のブロックを暗号化するプロセスに混在します。 したがって、2 つの同一のプレーン テキスト ブロックの出力は異なります。 この手法では前のブロックを使用して次のブロックを暗号化するため、データの最初のブロックを暗号化するには初期化ベクトルが必要です。

適用対象