AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DEC Rijndael liefert andere Ergebnisse als C Programm
Thema durchsuchen
Ansicht
Themen-Optionen

DEC Rijndael liefert andere Ergebnisse als C Programm

Ein Thema von WorstNightmare · begonnen am 24. Apr 2009 · letzter Beitrag vom 24. Apr 2009
Antwort Antwort
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
Dax
(Gast)

n/a Beiträge
 
#2

Re: DEC Rijndael liefert andere Ergebnisse als C Programm

  Alt 24. Apr 2009, 16:35
Bist du sicher, dass beide im gleichen Ciphermodus laufen? Soweit ich weiß, ist CBCx eine Erfindung von Hagen.
  Mit Zitat antworten Zitat
WorstNightmare

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

Re: DEC Rijndael liefert andere Ergebnisse als C Programm

  Alt 24. Apr 2009, 16:39
Würde sonst nicht was ganz anderes rauskommen? Außerdem geht es ja bei manchen Dateien. Und im C-Source steht über der Methode der Kommentar "CBC mode decryption", also denke ich schon, dass das richtig ist

Edit: So, ich habe es gerade mal mit ECBx versucht, da sind diese beiden Bytes richtig, dafür aber im Rest ein paar Fehler...das ist wirklich seltsam...

Edit2:
Ist zwar alles andere als ein saubere Lösung, funktioniert allerdings bei jeder der Dateien zu 100%

Delphi-Quellcode:
var
  AES: TCipher_Rijndael;
  E, Res: array[0..15] of Byte;
begin
  AES := TCipher_Rijndael.Create;
  try
    AES.Init(CommonKey, 16, IV, 16);
    AES.Mode := cmECBx;
    AES.Decode(Source, E, 16);

    AES.Mode := cmCBCx;
    AES.Decode(Source, Res, 16);

    Res[8] := E[8];
    Res[9] := E[9];
    Move(Res, Dest, 16);
  finally
    FreeAndNil(AES);
  end;
end;
Edit: Habe mittlerweile herausgefunde, dass immer 2 Byte des IV falsch waren
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz