Udostępnij za pośrednictwem


TripleDESCryptoServiceProvider.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ńcuchowego o nazwie łańcucha 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, będzie szyfrować ten sam blok wejściowy zwykłego tekstu w tym samym bloku wyjściowym 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ą coś o strukturze bloku zwykłego tekstu, mogą użyć tych informacji, aby rozszyfrować znany blok tekstu szyfrowania i ewentualnie odzyskać klucz. Aby rozwiązać ten problem, informacje z poprzedniego bloku są mieszane w procesie 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, potrzebny jest wektor inicjowania w celu zaszyfrowania pierwszego bloku danych.

Dotyczy