SymmetricAlgorithm.IV Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает вектор инициализации (IV) для алгоритма симметричного шифрования.
public:
virtual property cli::array <System::Byte> ^ IV { cli::array <System::Byte> ^ get(); void set(cli::array <System::Byte> ^ value); };
public virtual byte[] IV { get; set; }
member this.IV : byte[] with get, set
Public Overridable Property IV As Byte()
Значение свойства
Вектор инициализации.
Исключения
Предпринята попытка задания для вектора инициализации значения null
.
Предпринята попытка задания недопустимого размера вектора инициализации.
Комментарии
Свойству IV автоматически присваивается новое случайное значение при создании нового экземпляра одного из SymmetricAlgorithm классов или при вызове GenerateIV метода вручную. Размер свойства должен совпадать с размером IV свойства, BlockSize разделенного на 8.
Классы, производные от класса , SymmetricAlgorithm используют режим цепочки, называемый цепочкой блоков шифрования (CBC), который требует ключа и вектора инициализации для выполнения криптографических преобразований данных. Чтобы расшифровать данные, зашифрованные с помощью одного из SymmetricAlgorithm классов, необходимо задать Key для свойства и IV свойства те же значения, которые использовались для шифрования.
Для заданного секретного ключа k простой блочный шифр, который не использует вектор инициализации, зашифрует один и тот же входной блок обычного текста в тот же выходной блок зашифрованного текста. Если в потоке обычного текста есть повторяющиеся блоки, в потоке текста шифра будут повторяющиеся блоки. Если несанкционированные пользователи ничего не знают о структуре блока обычного текста, они могут использовать эти сведения для расшифровки известного блока текста шифра и, возможно, восстановления ключа. Чтобы решить эту проблему, сведения из предыдущего блока смешиваются в процессе шифрования следующего блока. Таким образом, выходные данные двух идентичных блоков обычного текста отличаются. Так как этот метод использует предыдущий блок для шифрования следующего блока, для шифрования первого блока данных требуется вектор инициализации.