Блочное кодирование больших объемов данных
Необходимо кодирование данных произвольного размера. Хочу использовать для этого режим OFB.
Пробное кодирование массивов данных размером от 40 до 2000Байт в режиме OFB аппаратными алгоритмами (EAS128, GSII64) и программным EAS256 дало следующие результаты:
- при использовании EAS128, GSII64 имели место частые случаи зависания вызова GrdCrypt при кодировании блоков (при разбиении массива на блоки размером от 16 до 255 байт) сбойный блок случаен (может быть как на первом блоке, так и на промежуточном)
- довольно устойчивая работа EAS256 (имели место редкие зависания уже после вызова GrdCrypt )
Кроме того периодически зависает вызов GrdFind при инициализации.
Подскажите пожалуйста, из за чего это может происходить. Использую SDK вер 6.2
Какой Максимальный объем данных возможен для передачи в один вызов GrdCrypt в этих режимах для алгоритмов GSII64 и для AES?
Ограничен ли Минимальный объем передаваемых данных?
Правильно я понимаю, что для кодирования объемов данных превышающих верхнее ограничение нужно разбить их на блоки меньшего размера и передавать в GrdCrypt с указанием признаков GrdSC_First, GrdSC_Next, GrdSC_Last для, соответственно, 1-го, промежуточных и последнего блока (GrdSC_All-для единственного блока)?
При каждом вызове необходимо восстанавливать значения массива содержащего вектор начальной инициализации (и строку с ключем для AES256)?
В документации описание этих вопросов несколько размыто.
Что означает следующая фраза SDK GrdCrypt :
"Если шифрование на аппаратно-реализованном алгоритме выполнялось блоками произвольной длины (т. е. использовались флаги GrdSC_First, GrdSC_Next, GrdSC_Last), то для корректного расшифрования длина и порядок обработки блоков должны сохраняться. Для программно-реализованных алгоритмов такое ограничение отсутствует. "