AesCryptoServiceProvider.IV Vlastnost

Definice

Získá nebo nastaví inicializační vektor (IV) pro symetrický algoritmus.

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()

Hodnota vlastnosti

Byte[]

Inicializační vektor.

Výjimky

Došlo k pokusu o nastavení inicializačního vektoru na null.

Došlo k pokusu o nastavení inicializačního vektoru na neplatnou velikost.

Poznámky

Vlastnost IV se automaticky nastaví na novou náhodnou hodnotu pokaždé, když vytvoříte novou instanci jedné z SymmetricAlgorithm tříd nebo při ručním GenerateIV volání metody. Velikost IV vlastnosti musí být stejná jako BlockSize vlastnost dělená 8.

Třídy odvozené z SymmetricAlgorithm třídy používají režim řetězení označovaný jako řetězení bloků šifry (CBC), který vyžaduje klíč a inicializační vektor k provádění kryptografických transformací dat. Chcete-li dešifrovat data zašifrovaná pomocí jedné z SymmetricAlgorithm tříd, musíte vlastnost a IV vlastnost nastavit Key na stejné hodnoty, které byly použity k šifrování.

Pro daný tajný klíč k jednoduchý blok šifry, která nepoužívá inicializační vektor, zašifruje stejný vstupní blok prostého textu do stejného výstupního bloku šifrového textu. Pokud máte ve streamu prostého textu duplicitní bloky, budete mít v rámci datového proudu šifrového textu duplicitní bloky. Pokud neautorizovaní uživatelé znají něco o struktuře bloku vašeho prostého textu, můžou tyto informace použít k dešifrování známého bloku šifrovaného textu a případně obnovení klíče. Pro boj s tímto problémem se informace z předchozího bloku směšují do procesu šifrování dalšího bloku. Výstup dvou identických bloků prostého textu je tedy odlišný. Vzhledem k tomu, že tato technika používá předchozí blok k šifrování dalšího bloku, je potřeba inicializační vektor k šifrování prvního bloku dat.

Platí pro