Einzelnen Beitrag anzeigen

Benutzerbild von marodeur
marodeur

Registriert seit: 19. Okt 2003
Ort: Wismar
8 Beiträge
 
Delphi 2005 Architect
 
#1

MD5 Hash einer Datei ermitteln

  Alt 30. Apr 2005, 17:13
Manchmal benötigt man den MD5 Hash einer Datei um sie eindeutig zu Identifizieren, dieser Code sollte helfen es mit den .NET Framework zu realisieren.
Getestet habe ich das ganze mit Delphi 2005 und .NET Framework v1.1.

Benötigte Namespace:
Delphi-Quellcode:
System.Security.Cryptography
System.IO
FileStream erstellen:
FILE_PATH enthält den Pfad zu eurer Datei zB 'c:/download.dat'
myFileStream := FileStream.Create(FILE_PATH, FileMode.Open, FileAccess.Read, FileShare.None); MD5CryptoServiceProvider erstellen, diese Enthält Methoden für das erzeugen von Hashes
myMD5CryptoServiceProvider := MD5CryptoServiceProvider.Create; Der Methode ComputeHash den FileStream übergeben, ComputeHash liefert ein Byte Array zurück
Buffer := myMD5CryptoServiceProvider.ComputeHash(myFileStream); Ressourcen freigeben
Delphi-Quellcode:
myMD5CryptoServiceProvider.Clear;
myFileStream.Close;
Das Byte Array in die 32 stellige Hexadezimal Schreibweise konvertieren zB '4679E94E07F9A61F42B3D7F50CAE0AEF'
Delphi-Quellcode:
while i < (Buffer AS &Array).Length do
begin
  MD5Str := MD5Str + Buffer[i].ToString('x2');
  inc(i);
end;
MD5Str := MD5Str.ToUpper;

MD5Str enthält nun den MD5 Hash.
So das wars eigentlich

Nachtrag: Test mit 700MB grosser File durchgeführt, Resultat ist das man übers FCL sehr schnell Hashen kann, beim Test bin ich auf 25sek gekommen. Für die gleiche File brauchte DAMN_Hash_Calculator_v1_5_1.exe bei mir knappe 60sek. Die selbe File noch mit md5.pas unter Delphi6 hat mehrere Minuten gedauert.
Talk to the hand!
  Mit Zitat antworten Zitat