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