Статус: Новичок
Группы: Участники
Зарегистрирован: 03.05.2011(UTC) Сообщений: 6 Откуда: 12
|
Добрый День!
Рассматриваю примеры из SDK на зашифрование / расшифрование файла. В примерах указан размер блока. По умолчанию он равен 4096 байт. Если размер файла меньше или равен 4096 байтам, то файл шифруется и расшифровывается корректно. Если больше 4096 байт, то при расшифровании файла получаем несоответствие с исходным. Несоответствия содержатся в байтах с номерами: 4097 - 4104 8193 - 8199 и так далее (номер начального байта принял за 1). Другими словами первый блок расшифровывается полностью правильно, в каждом последующем блоке первые 8 байт отличаются от исходных.
Пробовал менять размер блока, результат тот же. Выставляю, к примеру 10000. Первые 10000 байт расшифровываются правильно. Несоответствия проявляются в байтах с номерами 10001 - 10008 20001 - 20008 и так далее (номер начального байта принял за 1).
Размер блока меняю, конечно, сразу в обоих примерах (и на расшифрование и на шифрование).
Есть смутные сомнения что разгадка кроется в векторе инициализации. В примере на расшифрование он 1 раз устанавливается с помощью функции CryptSetKeyParam(). 1. Может быть его необходимо устанавливать перед каждым блоком? 2. Может у каждого блока свой вектор инициализации?
Заранее спасибо за помощь)
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.01.2011(UTC) Сообщений: 589 Откуда: Крипто-Про
|
Сохранять вектор инициализации нужно ДО начала шифрования, а равно устанавливать его значение - до расшифрования.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 03.05.2011(UTC) Сообщений: 6 Откуда: 12
|
rozhkov написал:Сохранять вектор инициализации нужно ДО начала шифрования, а равно устанавливать его значение - до расшифрования.
Собственно так и делаю. Ведь если первые 8 байт в файле расшифровываются нормально - значит вектор инициализации сохранен и установлен верно? Проблема собственно в том, что неверно расшифровываться начинают первые восемь байт второго блока. Затем третьего и т.д. Спасибо за ответ.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Похоже на ошибку в примере. У функций Encrypt и Decrypt есть параметр bFinal - в примерах он TRUE, а должен быть FALSE во всех блоках, кроме последнего, или перед каждым блоком необходимо сохранять IV. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 03.05.2011(UTC) Сообщений: 6 Откуда: 12
|
maxdm написал:Похоже на ошибку в примере. У функций Encrypt и Decrypt есть параметр bFinal - в примерах он TRUE, а должен быть FALSE во всех блоках, кроме последнего, или перед каждым блоком необходимо сохранять IV. Спасибо за помощь! Вроде стало работать)))
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close