Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Algorithmen (https://www.delphipraxis.net/28-library-algorithmen/)
-   -   Prism MD5 Hash einer Datei ermitteln (https://www.delphipraxis.net/45152-md5-hash-einer-datei-ermitteln.html)

marodeur 30. Apr 2005 17:13


MD5 Hash einer Datei ermitteln
 
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'
Delphi-Quellcode:
myFileStream := FileStream.Create(FILE_PATH, FileMode.Open, FileAccess.Read, FileShare.None);
MD5CryptoServiceProvider erstellen, diese Enthält Methoden für das erzeugen von Hashes
Delphi-Quellcode:
myMD5CryptoServiceProvider := MD5CryptoServiceProvider.Create;
Der Methode ComputeHash den FileStream übergeben, ComputeHash liefert ein Byte Array zurück
Delphi-Quellcode:
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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