Udostępnij za pośrednictwem


AesCryptoServiceProvider.IV Właściwość

Definicja

Pobiera lub ustawia wektor inicjowania (IV) dla algorytmu symetrycznego.

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

Wartość właściwości

Byte[]

Wektor inicjowania.

Wyjątki

Podjęto próbę ustawienia wektora inicjowania na null.

Podjęto próbę ustawienia wektora inicjowania na nieprawidłowy rozmiar.

Uwagi

Właściwość IV jest automatycznie ustawiana na nową wartość losową za każdym razem, gdy tworzysz nowe wystąpienie jednej z SymmetricAlgorithm klas lub podczas ręcznego wywoływania GenerateIV metody. Rozmiar IV właściwości musi być taki sam jak BlockSize właściwość podzielona przez 8.

Klasy pochodzące z SymmetricAlgorithm klasy używają trybu łańcucha nazywanego łańcuchem bloków łańcucha (CBC), który wymaga klucza i wektora inicjowania do wykonywania przekształceń kryptograficznych na danych. Aby odszyfrować dane zaszyfrowane przy użyciu jednej z SymmetricAlgorithm klas, należy ustawić Key właściwość i IV właściwość na te same wartości, które były używane do szyfrowania.

W przypadku danego klucza tajnego k prosty szyfr blokowy, który nie używa wektora inicjowania, zaszyfruje ten sam blok wejściowy zwykłego tekstu do tego samego bloku wyjściowego tekstu szyfrowania. Jeśli masz zduplikowane bloki w strumieniu zwykłego tekstu, będziesz mieć zduplikowane bloki w strumieniu tekstu szyfrowania. Jeśli nieautoryzowani użytkownicy wiedzą cokolwiek o strukturze bloku zwykłego tekstu, mogą użyć tych informacji do rozszyfrowania znanego bloku tekstu szyfrowania i ewentualnie odzyskać klucz. Aby rozwiązać ten problem, informacje z poprzedniego bloku są mieszane do procesu szyfrowania następnego bloku. W związku z tym dane wyjściowe dwóch identycznych bloków zwykłego tekstu są różne. Ponieważ ta technika używa poprzedniego bloku do szyfrowania następnego bloku, wektor inicjowania jest potrzebny do zaszyfrowania pierwszego bloku danych.

Dotyczy