Einzelnen Beitrag anzeigen

ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#9

AW: DEC 5.2 mit Vector deccipher Umbau von DOT net auf Delphi

  Alt 8. Mär 2013, 09:42
So ich habe jetzt wieder etwas rumprobiert und mir deine Beispielunits vorgenommen.
Da ich ja nur auf der Suche nach einer pbkdf1-Implementierung war, habe ich die von dir genommen (siehe unten) und dazu die Rijndael-Implementierung aus dem DEC. Das Key-Array habe ich entsprechend dem Beispiel in der t_kdf.pas
gewählt. Hier wirft rind.Init() allerdings den Fehler, der Key wäre zu groß.
Wenn ich den auf ein 20-Byte-Array reduziere (entsprechend der RFC), dann kommt stattdessen die Fehlermeldung,
der IV wäre zu groß. Der IV ist im konkreten Beispiel '2013-02-14 15:45:07.307', das Salt ein 6-Zeichen-String.

Was mache ich falsch? Funktioniert das überhaupt zusammen mit dem DEC oder muss ich AES_CBC_Decrypt aus deiner Lib nehmen? Wenn ja, könntest du mir da bitte erläutern, was die
Parameter bedeuten bzw. was da rein muss?

Delphi-Quellcode:
function DecryptBase64Str(const CipherText_Base64: Binary; const Password: Binary; const Salt: Binary; const InitVector: string): string;
var
  key: array[0..63] of byte;
  rind: TCipher_Rijndael;
  pass: string;
  hash: PHashDesc;
  ctx: TAESContext;
begin
  rind:= TCipher_Rijndael.Create;
  rind.Mode:= cmCBCx;
  hash:= FindHash_by_ID(_SHA1);
  pbkdf1(hash,@Password, SizeOf(password),@Salt,2,key,16);//SizeOf(key));
  rind.Init(key,Length(key),InitVector,SizeOf(InitVector));
  Result:= rind.DecodeBinary(TFormat_MIME64.Decode(CipherText_Base64));
end;
Danke nochmal
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat