Должен ли вектор инициализации требоваться для расшифровки моих данных?

Я использую RijndaelManaged для шифрования и расшифровки данных. Возможно, я неправильно понял смысл вектора инициализации, но я обнаружил, что если я устанавливаю для него другое значение при расшифровке своих данных, все, кроме первых 16 символов, по-прежнему расшифровываются правильно. Это ожидаемое поведение?


person matthewk    schedule 06.10.2011    source источник


Ответы (1)


да. В режиме CBC каждый блок зашифрованного текста используется как IV для следующего блока зашифрованного текста. Использование ошибочного IV испортит первый 16-байтовый блок, но последующие блоки не изменятся. Это может быть полезным свойством, так как оно позволяет восстанавливать ошибки после ошибочного блока, что может быть важно в некоторых ситуациях. Это также иллюстрирует, почему на самом деле нет необходимости хранить IV в секрете (в отличие от ключа!).

person rossum    schedule 06.10.2011