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 метода вручную. Размер свойства должен совпадать с BlockSize размером IV свойства, разделенным на 8.
Классы, производные от SymmetricAlgorithm класса, используют режим цепочки с именем цепочки блоков шифров (CBC), который требует ключа и вектора инициализации для выполнения криптографических преобразований данных. Чтобы расшифровать данные, зашифрованные с помощью одного из SymmetricAlgorithm классов, необходимо задать Key свойство и IV свойство таким же значениям, которые использовались для шифрования.
Для заданного ключа секрета k простой шифр блока, который не использует вектор инициализации, зашифрует тот же входной блок обычного текста в тот же выходной блок шифра. Если в потоке обычного текста есть повторяющиеся блоки, в текстовом потоке шифра будут повторяться блоки. Если несанкционированные пользователи ничего не знают о структуре блока обычного текста, они могут использовать эти сведения для расшифровки известного блока текста шифра и, возможно, восстановления ключа. Для борьбы с этой проблемой сведения из предыдущего блока смешиваются в процессе шифрования следующего блока. Таким образом, выходные данные двух идентичных текстовых блоков отличаются. Так как этот метод использует предыдущий блок для шифрования следующего блока, для шифрования первого блока данных требуется вектор инициализации.