AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Flottes Hash-Verfahren

Ein Thema von ByTheTime · begonnen am 7. Jul 2013 · letzter Beitrag vom 20. Jul 2013
Antwort Antwort
Seite 1 von 2  1 2      
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#1

Flottes Hash-Verfahren

  Alt 7. Jul 2013, 21:20
Moin,
es gibt zwar schon unzählige Threads dazu, wie man eine Datei hashen hann, aber ich wollte mal in Erfahrung bringen, welche am schnellsten sind. Es geht darum Dateien zu hashen. Ungefähr 124 GB Musik (nehm' ich zum testen) sollen so schnell wie möglich gehasht werden. Die beiden mir bekannten Verfahren sind das MD4 und MD5 Hashverfahren. Aber wo genau liegt der Unterschied? Ich habe gelesen das MD5 entwickelt wurde, da man MD4 möglicherweiße für unsicher hielt. Da es bei mir aber nicht um Sicherheit geht, sondern darum, die Vollständigkeit/Fehlerfreiheit einer Datei zu überprüfen, kann mir das ja egal sein. Zudem hat Hagen hier erwähnt, das seine MD4 Variante 239Mb/sec packt und MD5 immerhin 162Mb/sec. Ich habe mal ein Pseudo-Programm geschrieben, das packt ganze 29,8Mb/sec. Ist zwar auch ziemlich hingerotzt und unoptimiert, aber selbst wenn ich da noch versuche was rauszuholen, komm ich nie im Leben auf Hagen's Werte. Ich habe es übrigens mit INDY gemacht, da sind Hash-Funktionen dabei. Aber wie gesagt, da bietet sich MD4 ja wohl an, zumal es weniger Speicher verbraucht. Aber wo ist der Hacken? Würde MD4 für solch einen Zweck völlig ausreichen? Und wer hat hier die schnellste Funktion parat Können ja 'nen Wettkampf draus machen

MfG,
Lukas

P.S: Pseudo-Hasher im Anhang Einfach Ordner wählen und hashen Bei mir haben 11 Datein mit insgesamt 962MB 32270ms gebraucht (32,27s)
Angehängte Dateien
Dateityp: zip Hasher.zip (728,8 KB, 19x aufgerufen)
Lukas

Geändert von ByTheTime ( 7. Jul 2013 um 21:21 Uhr) Grund: Anhang vergessen...
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 21:57
Ich vermute mal, dass es bei MD4 (zwar selten bis fast nie aber) öfter zu einer Kollision kommt - sprich Hash(A) == Hash(B).
Man hat für MD5 auch Kollisionen gefunden bzw es gibt soweit ich mich recht entsinne, Methoden, eine Kollsion speziell für einen Datenstrom zu finden.
Wie dem auch sei, ich schätze, sofern es dir um die Eindeutigkeit geht, müsstest du da großen Wert drauf legen.
Ich kann dir aber leider nicht sagen, welcher Hashing Algorithmus da in dieser Hinsicht am besten ist.
Edit: Kuck mal hier
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 22:24
Achja, ich benötige für 962 mb (11 gleich große Dateien mit zufälligem, gleichverteiltem Inhalt - Entropie!) ca 2 sek (mit MD5).

Edit: Habs angehängt. Kann sein, dass mein Rechner stärker ist als deiner. Probiers selbst aus!

Edit2: Habe ich den Hagen geschlagen? Wie alt ist dieser Thread, wo er diese Zahlen gepostet hat? Wahrscheinlich ist das schon ein bisschen her und damals waren die Rechner evt. nicht so gut..
Angehängte Dateien
Dateityp: rar Hashing.rar (104,4 KB, 25x aufgerufen)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton ( 7. Jul 2013 um 22:29 Uhr)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#4

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 22:36
Danke erstmal für die Antwort. Kannst du mal ein paar Kerndaten von deinem Rechner posten. Ich hab hier nur ein Laptop mit i5M, 4GB Ram. Nebenbei noch eine GT310M als Graka, was aber nebensächlich ist. Mit deiner Hashing.exe brauche ich 4,46 Sekunden. Morgen versuche ich das ganze nochmal an einem anderen System mit i5, 8GB Ram zu testen. Allerdings bin ich dann erstmal im Urlaub... Mal sehen ob ich es noch schaffe.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 22:41
Ups entschuldige mich, es war doch MD4 =/
Ich uploade mal mit MD5.

Mit md5 brauch ich im Schnitt um die 3 Sekunden.
(Achja, nicht wundern, dass da immer dieselben Daten generiert werden - es wird ein konstanter RandomSeed gesetzt damit über verschiedene Systeme hinweg verglichen werden kann!)

Edit:
Relevante PC Daten:
Desktop-Standrechner mit i7-2600 3.4 Ghz
8gb Ram und Win 7 64 Bit System.
Angehängte Dateien
Dateityp: rar Hashing.rar (104,5 KB, 16x aufgerufen)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton ( 7. Jul 2013 um 23:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.587 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 23:28
Ich hab hier nur ein Laptop mit i5M, 4GB Ram.
Dass das bei einer Notebookfestplatte deutlich länger dauert, ist ja zu erwarten... die schaffen oft nur um die 70 MiB/s maximal, selbst die schnellsten liegen bei rund 100 MiB/s. Deshalb bringen SSDs ja auch gerade bei Notebooks so viel.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#7

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 23:30
Das läuft bei mir sogar schneller durch: 3,74 Sekunden.

Edit: @jaenicke: Ich setzt mich morgen früh nochmal an einen flotten Rechner mit i5, 8GB Ram und SSD. Mal sehen was dabei herauskommt.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 23:35
Nun, das Hashen könnte man ja direkt im Hauptspeicher machen - wird dadurch natürlich um einiges schneller.. Aber da er es anders gemacht hat, wollte ich es genauso machen um für gleiche Verhältnisse zu sorgen
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Flottes Hash-Verfahren

  Alt 7. Jul 2013, 23:44
Wie gross sind denn die Datenblöcke die durch MD4 oder MD5 gejagt werden?
Falls die Blöcke < 4kB sind wäre das der Flaschenhals.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Flottes Hash-Verfahren

  Alt 8. Jul 2013, 00:02
Delphi-Quellcode:
const
  DefaultChunkSize = $40000; // 256 kb - like Windows!
Hab irgendwann einmal rausgefunden, dass Windows beim Kopieren von Datein udgl auch 256 kb Chunkgrößen verwendet, daher der Kommentar!

Meine Hash-API (Wrapper) sollte hier irgendwo veröffentlicht sein (Luckie hat es bei seiner API Sammlung aufgenommen - sucht mal nach aphtonHashAPI)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton ( 8. Jul 2013 um 00:06 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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