Пишу программу, которая шифрует текст AES'ом. На форме три компонента Memo c текстом (открытым, зашифрованным, расшифрованным). Не знаю проблема это или нет, но первые несколько шифрований получается разный зашифрованный текст. Спустя 5-10 раз, он принимает одинаковый вид на всех итерациях.
Вот то, что выдаёт Мемо зашифрованного текста.
Ї?HЏ=РУ9јЪoBЅхАP
т”#u„ЁЩќ¶ё¤aB
eжјф!лSAEѓR‰¬р
іѓnЄу/§юа:6oR%X
іѓnЄу/§юа:6oR%X
Sжыувчђ5n)Гњ‡rШ
іѓnЄу/§юа:6oR%X
іѓnЄу/§юа:6oR%X
іѓnЄу/§юа:6oR%X
А вот собственно код кнопки, что выполняет все эти операции.
//Ñ÷èòûâàåì äëèíó êëþ÷à è óêàçûâàåì Nk è Nr
case ListBox1.ItemIndex of
0:begin Nk:=4;Nr:=10; end;
1:begin Nk:=6;Nr:=12; end;
2:begin Nk:=8;Nr:=14; end;
end;
//Ñ÷èòûâàåì êëþ÷
s:=KText.Text;
for i:=1 to Nk*4 do
key[i]:=Ord(s[i]);
//Ðàñøèðåíèå êëþ÷à
keys:=KeyExpansion(key,Nk);
//Èíèöèàëèçàöèÿ âõîäà
s:=MText.Lines[0];
for i:=1 to 16 do open[i]:=Ord(s[i]);
//Øèôðîâàíèå
close:=Cipher(open,keys,Nr);
s:='';for i:=1 to 16 do s:=s+Char(close[i]);
CText.Lines.Add(s);
//Ðàñøèôðîâàíèå
case ListBox2.ItemIndex of
0:decrypted:=InvCipher(close,keys,Nr);
1:decrypted:=EqInvCipher(close,keys,Nr);
end;
s:='';for i:=1 to 16 do s:=s+Char(decrypted[i]);
PText.Lines.Add(s);
p.s. в функциях KeyExpansion и Cipher никаких рандомных значений или функций не используется.