Как всегда получать одинаковый результат с одинаковыми настройками при шифровании строки?

В Delphi XE2 с Turbopower Lockbox-3 я использую следующий код для шифрования строки:

Codec1.EncryptString('AText', Encrypted);

Шифр — [AES-192], режим цепочки — PCBC.

Однако каждый раз при шифровании одной и той же строки с использованием одних и тех же параметров получается разный результат.
Как я могу всегда получать одинаковую результирующую строку с одинаковыми параметрами? (Пароль, Шифр, Режим цепочки и т. д.).


person user1580348    schedule 15.07.2013    source источник


Ответы (1)


В режиме CBC вы должны получать разные зашифрованные тексты при каждом вызове функции шифрования, даже с одним и тем же открытым текстом. Это свойство обеспечивает защиту от определенных типов атак и является одной из причин, по которой CBC более безопасен, чем ECB.

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

Я не знаком с вашей платформой, поэтому не знаю, как это сделать в вашем случае.

person ntoskrnl    schedule 15.07.2013
comment
@ntoskml верен. LB3 автоматически создает случайный IV от имени клиента и добавляет его к выходному сообщению. Каждый раз иметь разное зашифрованное сообщение — это нормально, правильно и желательно. - person Sean B. Durkin; 16.07.2013