次の方法で共有


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) と呼ばれるチェーン モードを使用します。これには、データに対して暗号化変換を実行するためのキーと初期化ベクトルが必要です。 いずれかのクラスを使用して暗号化されたデータを SymmetricAlgorithm 暗号化解除するには、 プロパティと プロパティを Key 暗号化に使用されたものと IV 同じ値に設定する必要があります。

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

適用対象