Einzelnen Beitrag anzeigen

WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#1

DEC Rijndael liefert andere Ergebnisse als C Programm

  Alt 24. Apr 2009, 16:27
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.
  Mit Zitat antworten Zitat