У меня возникла странная проблема: я использую шифрование ees с режимом cfb. Все идет хорошо, я проверил шифрование с фиксированным IV. Но когда я использую случайный IV, проблема возникает. Я собираюсь подробно.Ошибка инициализации шифрования
function Random16DigitsString: AnsiString;
var
i: Integer; c0: byte;
begin
Randomize;
c0:=ord('0');
SetLength(Result, 16);
Result[1] := char(c0+Random(9)+1);
for i:=2 to 16 do Result[i] := char(c0+Random(10));
end;
Выходной образец приведенный выше код 8229343736510872
Когда я использовать эту функцию в фазе шифрования ее нормально, но когда я расшифровать файл, используя один и тот же ключ, то выход мусора. Но когда я жестко кодирую этот ключ на фазе шифрования, дешифрование успешно завершается.
Что мне не хватает. Я собираюсь с простым генератором случайных чисел.
1) Почему вы используете 'AnsiString', а не' array [0..15] byte'? 2) «Случайный» отстой, он определенно неуместен для любого использования криптографии. 3) Вы должны сгенерировать все возможные байты, а не только цифры ASCII. 4) Для шифрования вам необходимо использовать тот же IV для расшифровки. Превращение IV в зашифрованный текст является стандартной практикой. – CodesInChaos
Я использую AnsiString для хранения IV, я не могу понять, почему один и тот же ключ генерируется случайным образом не сработавшим, но когда тот же ключ жестко закодирован в строке, в которой он работал. – Rahul
Я проверил значение IV так же на фазе шифрования и дешифрования (используя произвольный сгенерированный код) и с (жестко закодированное значение IV). Тогда почему эта проблема, я действительно запутался. – Rahul