Thema: Delphi hagen reddman dec

Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

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

AW: hagen reddman dec

  Alt 16. Feb 2011, 21:46
Ok, ich gebe zu für einen unerfahrenen Delphientwickler ist die korrekte Benutzung der DEC THash Klassen bischen ungewohnt.

Alle .Calc???() Methoden der THash Klassen sind als Klassenmetoden deklariert. Dh. du benutzt

Delphi-Quellcode:
  WriteLn( THash_M5.CalcBinary('abc', TFormat_HEX) );
  WriteLn( THash_SHA1.CalcFile('c:\test.txt', TFormat_MIME) );
oder

Delphi-Quellcode:
var
  MyClass: THashClass;
begin
  MyClass := THash_MD5;
  WriteLn( MyClass.CalcBinary(.....) );
end;
In den obigen Beispielen wird per Einzeiler und mit Hilfe von Klassenmethoden alles in einem Rutsch berechnet, was die häufigste Anwendungen ist.

Nur in den selteneren Fällen benutzt man die Hash Klassen im DEC auf die gewohnte und herkömliche Weise:

Delphi-Quellcode:
var
  Hash: TDECHash;
  Data: array[0..2] of Byte;
begin
  Hash := THash_MD5.Create;
  try
    Hash.Init;
    Hash.Calc(Data[0], 1);
    Hash.Calc(Data[1], 2);
    Hash.Done;
    Result := Hash.DigestStr(TFormat_HEX);
  finally
    Hash.Free;
  end;
end;
In diesem Beispiel sieht man die einschlägige Vorgehensweise mit der Erstellung einer Objektinstanz. Deweiteren benutzt man die Methode .Calc() mit typlosen Zeiger auf Datenbereiche und Angabe der zu berechneden Datenbytes.

Man benutzt dies so wenn man, wie oben im Bespiele gezeigt, über getrennte Daten/Speicherbereiche eine Berechnung durchführen muß so als wenn diese zusammenhanglosen Datenbereiche ein einziger Datenbereich wäre. Also Zb. wenn man komplexere Datenstruktren/Records in/aus Streams speichdert/lädt und im gleichen Atemzug auch einen Hash berechnen möchte.

Die zweite Methode der Benutzung der Hashklassen ist also eher die Ausnahme und dient der Komnpatibilität und der Implementation besonderer Verfahren/Protokolle. Siehe dazu zB. die Medthoden .KDF?() und .MGF?() an die quasi dynmische Datenbereiche errechnen, diese mit den übergebenen Datenberechen verkettet und so eine Berechnung stückchenweise durchführen so als hätte man diese Daten in einem Datenbereich erstmal vorher berechnet.

Gruß Hagen
  Mit Zitat antworten Zitat