Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MD5 Hash einer Datei ermitteln (https://www.delphipraxis.net/129162-md5-hash-einer-datei-ermitteln.html)

Z4ppy 13. Feb 2009 18:20


MD5 Hash einer Datei ermitteln
 
Ich habe diesen Eintrag in der Code Library schon gesehen, allerdings gehts da um Delphi .NET ;)

Ich möchte mir ein Programm schreiben, das möglichst schnell den MD5 Hash einer Datei berechnen kann. Die 25 Sekunden für 700 MB scheinen mir da schon relativ schnell. Wie kann man das in Delphi am besten umsetzen?

MfG Z4ppy

omata 13. Feb 2009 18:24

Re: MD5 Hash einer Datei ermitteln
 
Hast du das hier mal ausprobiert?

Z4ppy 13. Feb 2009 18:34

Re: MD5 Hash einer Datei ermitteln
 
Hab ich jetzt nicht ausprobiert, aber im oben verlinkten Thread steht ja auch:
Zitat:

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.
Das wird wohl diese md5.pas sein, daher.....

MfG Z4ppy

omata 13. Feb 2009 21:16

Re: MD5 Hash einer Datei ermitteln
 
Ups, wer lesen kann ist klar im Vorteil, sorry.

Dax 13. Feb 2009 21:22

Re: MD5 Hash einer Datei ermitteln
 
Muss es unbedingt eine Delphi-Implementation von MD5 sein? Wenn nicht, könntest du einfach voroptimierte Objektdateien linken.

Hawkeye219 13. Feb 2009 22:35

Re: MD5 Hash einer Datei ermitteln
 
Hallo,

die verlinkte Unit MD5.pas bietet noch einige Optimierungsmöglichkeiten:

1. Die Aufrufe der Funktionen F, G, H und I durch die jeweils einzige Anweisung ersetzen.
2. Die Aufrufe der Funktion rot durch die jeweils einzige Anweisung ersetzen.
3. Die jeweils letzte Inc-Anweisung in FF, GG, HH und II in den vorangehenden Ausdruck einbauen.
4. Die Funktion Encode durch Move ersetzen.

Zusammen mit einer eingeschalteten Optimierung sollte sich eine deutliche Reduzierung der Laufzeit ergeben.

Gruß Hawkeye

Z4ppy 13. Feb 2009 22:49

Re: MD5 Hash einer Datei ermitteln
 
@Dax: Es soll einfach so schnell wie möglich sein, ich möchte daher eigentlich mehrere Sachen ausprobieren und dann das schnellste nehmen. Aber wenn du mir so eine voroptimierte Objektdatei geben kannst, dann nur her damit...

@Hawkeye: Danke, ich werde morgen mal probieren, da ein wenig zu schrauben...

MfG Z4ppy

BUG 13. Feb 2009 23:26

Re: MD5 Hash einer Datei ermitteln
 
Wäre nicht überrascht, wenn das DEC im Vergleich auch nicht schlecht abschneidet
(in irgendeinem Beitrag* hat Hagen auch noch eine schnellere inoffizielle Version erwähnt).

Es gibt auch Md5-Funktionen in der Windows-"Cryptdll.dll", keine Ahnung ob die schnell oder langsam sind.

MfG,
Bug

* Man muss sich nur die richtigen Schlüsselwörter für die Suche merken: Hier im Forum suchenRussen Md5 :-D

himitsu 14. Feb 2009 09:04

Re: MD5 Hash einer Datei ermitteln
 
Zitat:

Zitat von Hawkeye219
Hallo,

die verlinkte Unit MD5.pas bietet noch einige Optimierungsmöglichkeiten:

1. Die Aufrufe der Funktionen F, G, H und I durch die jeweils einzige Anweisung ersetzen.
2. Die Aufrufe der Funktion rot durch die jeweils einzige Anweisung ersetzen.
3. Die jeweils letzte Inc-Anweisung in FF, GG, HH und II in den vorangehenden Ausdruck einbauen.
4. Die Funktion Encode durch Move ersetzen.

Zusammen mit einer eingeschalteten Optimierung sollte sich eine deutliche Reduzierung der Laufzeit ergeben.

Gruß Hawkeye

deine Optimierungen sind da schon alle lange drin, ^^
und dann wurde alles noch nach ASM gewwandelt
http://www.delphipraxis.net/internal...t.php?t=135239 siehe FHash.pas
die entsprehenden Pascal-Befehle stehen aber immernoch als Kommentar im Assemblercode drin.
und irgendwo geister noch 'ne Single-Version der FHash rum (also nur die Hashfunktionen in einer einzelnen Datei)

Z4ppy 14. Feb 2009 09:49

Re: MD5 Hash einer Datei ermitteln
 
Ich werde heute mehrere Sachen ausprobieren und dann hier Bericht erstatten.
Danke vorerst :thumb:

MfG Z4ppy

€dit: OK, ich habs völlig vergessen das zu machen, weil ich so viel anderes zu tun hatte... Aber morgen kommts dran ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz