Здравствуйте, пользуюсь алгоритмом Blowfish в режиме CFB для шифровки/расшифровки сообщений, как при расшифровке проверить правильность ключа и вектора инициализации?
Язык программирования: C++
Библиотека: OpenSSL
Заранее благодарю за помощь!
Не совсем понял вопрос, но обычно, чтобы не было ложных срабатываний из за неверного ввода ключа, где то хранят его контрольную сумму и перед расшифровкой сверяют контрольную сумму введённого ключа с хранимой.
Ну вот и храните контрольную сумму (ключа + вектор инициализации). Можно использовать вообще любой алгоритм имеющий более-менее приемлемое рассеяние. Возьмите md5 или crc32/64. Тут даже криптостойкость неважна.
Попробую привести пример:
Имеем зашифрованное сообщение, мое приложение и ничего более (предположим, что я осуществляю шифрование на одном компьютере, а расшифровку на другом). При вводе неправильного ключа или вектора инициализации я должен получить уведомление об этом, а не неизвестное сообщение
А, ну если так, то тогда берите контрольную сумму от сообщения и дописывайте его к сообщению при передаче. На приемной стороне расшифровываете, снова считаете контрольную сумму и сравниваете её с переданной. Если совпали то всё в порядке.
mngen: Кстати, судя по тегам вопроса вы пытаетесь что то через ssl сделать. SSL - протокол, который не требует передачи самого ключа, а использует ассиметричный шифр для того чтобы передать ключ для симметричного шифра. Имейте это ввиду.