Проверить ключ / IV перед расшифровкой с помощью AesManaged?или избежать CryptographicException, прежде чем это произойдет? - PullRequest
3 голосов
/ 30 марта 2012

Я написал пару функций шифрования / дешифрования AES на основе этого примера .

Это прекрасно работает, пока я не передам неправильный ключ или IV в свою функцию дешифрования, после чего я получаю «Заполнение недействительно и не может быть удалено». CryptographicException, что обсуждали другие.

Мой вопрос: существует ли какой-либо способ проверки ключа / IV до возникновения исключения? Может быть, какая-то контрольная сумма? Или ответ просто поймать это исключение?

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Ответ только для того, чтобы поймать исключение да. IV обычно отправляется с зашифрованным сообщением, поэтому нет смысла проверять это отдельно. Что касается ключа, нормальным способом проверки значения ключа является использование KCV (значение проверки ключа):

Проверьте ответ Пончо по моему вопросу здесь:

https://crypto.stackexchange.com/questions/1930/sending-kcv-key-check-value-with-cipher-text

По сути, это не стоит того. Ваш пробег может меняться, конечно. С другой стороны, добавление какой-либо аутентификации к вашему зашифрованному сообщению всегда имеет большой смысл, но все равно не покажет вам, повреждены ли данные или подделаны, или если у вас неправильный ключ ...

0 голосов
/ 31 марта 2012

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

...