Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#12

Re: Hash mit DEC: wie und welchen

  Alt 10. Sep 2007, 17:24
Per hand geht das dann so

Delphi-Quellcode:

with THash_MD5.Create do
try
  Init;
  Calc(DeinString[1], Length(DeinString));
  Calc(NochEinString[1], Length(NochEinString));
  Calc(IrgendEinInteger, SizeOf(IrgendEinInteger));
  Done;

  ResultAsHEXString := DigestStr(TFOrmat_HEX);
finally
  Free;
end;
Mit der von Hand Methode kannst du verschiedene Datenbereich nacheinander so hashen als wären die in einem Datenbereich linear sequentiell angeordnet.

Um ein Passwort auf sicherer Weise in einen Sessionkey umzuwandeln supporten die Hash Klassen eigene Methoden. Sowas macht man über KDF's = Key Derivation Functions und dafür gibt es sogar Standardverfahren.

Delphi-Quellcode:

var
  Salt: Binary;
begin
  Salt := RandomBinary(16);
  
  SessionKey := THash_MD5.KDFx(Password, Salt, 16, TFormat_Binary);
end;
Das wandelt das Password in einen 16 Byte langen binären Wert um der mit dem Zufalls-Salt und mehreren Runden an Hash-Berechnungen verknüpft wurde.
Die Methoden .KDF1(), .KDFx() gibts in 2 Versionen, und sie benötigen einen Zufalls-Salt.

Möchtest du ohne diesen Salt arbeiten, den du ja mit übertragen musst, dann sind es MGFs = Mask Generation Functions. Diese Methoden heisen dann .MGF1 und .MGFx().

Die x'er Versionen sind prohibitär von mir entwickelt und im Grunde besser als die Standard-Versionen .KDF2() und .MGF1(). Diese basieren auf dem IEEE Standard für Kryptographie. Schau dir in Unit DECHash.pas einfach deren Implentierungen an.


Gruß Hagen
  Mit Zitat antworten Zitat