Hallo,
ich nutze TCipher_Rijndael aus dem
DEC um Binary AES zu entschlüsseln. Der Key zum Entschlüsseln ist immer gleich, der InitVector wird aus dem Binary ausgelesen. IV, Key und das zu entschlüsselnde Material sind 16 Bytes lang.
Delphi-Quellcode:
procedure Decrypt(const IV; const Source; var Dest);
var
AES: TCipher_Rijndael;
begin
AES := TCipher_Rijndael.Create;
try
AES.Init(CommonKey, 16, IV, 16);
AES.Mode := cmCBCx;
AES.Decode(Source, Dest, 16);
finally
FreeAndNil(AES);
end;
end;
Das Binary Material ist vom Aufbau her immer gleich, hat jedoch immer anderen Inhalt. Nun habe ich das Problem, dass es bei manchen Dateien geht, bei anderen jedoch nicht, d.h. mein Ergebnis ist anders als das von einem C-Programm (welches rijndael.c aus OpenSSL benutzt).
Das sieht dann so aus (Byte-Folge):
Mein Programm: 63 01 CA 23 45 EB 71 34 64 92 81 36 D7 88 A8 55
C-Programm.....: 63 01 CA 23 45 EB 71 34 9B 6D 81 36 D7 88 A8 55 <-- richtig
Wie man sieht, liegt der Unterschied nur in 2 mittleren Bytes.
Sowas ist doch eigentlich nur möglich, wenn der Algorithmus kaputt/anders ist, oder?
Ich benutze das
DEC 5.2 von Assertor, könnte es vielleicht an der Umstellung nach Delphi 2009 liegen? Ich kann es mit früheren Versionen leider nicht testen.