Witam serdecznie, mam problem z szyfrowaniem aes.
Chciałem wykorzystać bibliotekę synapse w której jest unit SynaCrypt.
Poniżej kod który wywołuję:
function MyAes128Encrypt(DataIn,Key: AnsiString):AnsiString;
var Aes:TSynaAes;
begin
Aes:=TSynaAes.Create(Key);
try
Result:= Aes.EncryptECB(DataIn);
finally
Aes.Free;
end;
end;
function StrToHex(sString: ansistring): ansistring;
var
i : integer;
begin
result:='';
for i:=1 to length(sString) do
result:=result+' '+IntToHex( Ord(sString[i]) , 2);
end;
procedure TForm1.Button1Click(Sender: TObject);
var aes:Tsynaaes;
begin
Edit1.Text := strtohex(MyAes128Encrypt('aaabbbcccdddeeefff','1234567890123456'));
end;
Ciąg testowy to: aaabbbcccdddeeefff
klucz: 1234567890123456
W wyniku dostaję błędny zapis: 52 EB EE 07 76 B0 D0 E7 83 A1 B4 5F 4C A5 31 18
Dla porównania w kalkulatorze aes online
http://aes.online-domain-tools.com/
Mode: ECB (electronic codebook)
Dostaję:
52 eb ee 07 76 b0 d0 e7 83 a1 b4 5f 4c a5 31 18 f0 8c 53 ad 1b 7b c8 9e 2b 24 11 3f 2e b3 0c 07
Czyli jak widać znacznie dłuższy ciąg znaków w wyniku.
Domyślam się że ciąg wejściowy jest dopełniany znakiem o kodzie 0 (null) do pełnych 16-bajtowych bloków ale czemu tego nie robi synacrypt ?
Poratujecie jakimś pomysłem kawałkiem kodu.