2013-02-11 4 views
1

У меня возникла странная проблема: я использую шифрование 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

1) Почему вы используете 'AnsiString', а не' array [0..15] byte'? 2) «Случайный» отстой, он определенно неуместен для любого использования криптографии. 3) Вы должны сгенерировать все возможные байты, а не только цифры ASCII. 4) Для шифрования вам необходимо использовать тот же IV для расшифровки. Превращение IV в зашифрованный текст является стандартной практикой. – CodesInChaos

+0

Я использую AnsiString для хранения IV, я не могу понять, почему один и тот же ключ генерируется случайным образом не сработавшим, но когда тот же ключ жестко закодирован в строке, в которой он работал. – Rahul

+0

Я проверил значение IV так же на фазе шифрования и дешифрования (используя произвольный сгенерированный код) и с (жестко закодированное значение IV). Тогда почему эта проблема, я действительно запутался. – Rahul

ответ

0

Я использовал AnsiString для хранения ключа для контекста. Это была настоящая проблема, потому что в pascal AnsiString не является одиночным байтом. Поскольку @CodeInChaos сосредоточился на AnsiString, я проверил его и нашел. Поэтому я заменил

Key: AnsiString 

Для

Key : Array [0..32] of Char; 

и он успешно работал.

Спасибо @CodeInChaos.

Смежные вопросы