Поделиться через


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 свойства, BlockSize разделенного на 8.

Классы, производные от класса , SymmetricAlgorithm используют режим цепочки, называемый цепочкой блоков шифров (CBC), который требует ключа и вектора инициализации для выполнения криптографических преобразований данных. Чтобы расшифровать данные, зашифрованные с помощью одного из SymmetricAlgorithm классов , необходимо задать Key для свойства и IV свойства те же значения, которые использовались для шифрования.

Для заданного секретного ключа k простой блочный шифр, который не использует вектор инициализации, будет шифровать один и тот же входной блок обычного текста в тот же выходной блок шифра. Если в потоке обычного текста есть дублирующиеся блоки, то в потоке зашифрованного текста будут повторяющиеся блоки. Если неавторизованные пользователи знают что-либо о структуре блока обычного текста, они могут использовать эти сведения для расшифровки известного блока текста шифра и, возможно, восстановления ключа. Чтобы устранить эту проблему, сведения из предыдущего блока смешиваются в процессе шифрования следующего блока. Таким образом, выходные данные двух идентичных блоков обычного текста отличаются. Так как этот метод использует предыдущий блок для шифрования следующего блока, для шифрования первого блока данных требуется вектор инициализации.

Применяется к