Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Flottes Hash-Verfahren (https://www.delphipraxis.net/175659-flottes-hash-verfahren.html)

mentaltec 8. Jul 2013 14:52

AW: Flottes Hash-Verfahren
 
für
Zitat:

Zitat von ByTheTime (Beitrag 1221000)
Vollständigkeit/Fehlerfreiheit

wurde eigentlich CRC erfunden -- da sollte auch etwas schneller sein bzw. weniger CPU beanspruchen

mfg

ByTheTime 18. Jul 2013 21:58

AW: Flottes Hash-Verfahren
 
Urlaub vorbei, bin wieder fleißig am arbeiten. Und ja, CRC hat sich als bessere Lösung erwiesen. Dazu hab ich auch mehr gefunden und hab es in meine Anwendung implementiert. Hier, hierund hier etwas gespickt.

Danke für eure Hilfe :)

sx2008 18. Jul 2013 22:41

AW: Flottes Hash-Verfahren
 
CRC32 ist natürlich etwas schneller als MD4, aber bei sagen wir mal 4000 MP3-Dateien besteht rein rechnerisch die Chance von 1 zu 500000, dass zwei unterschiedliche Dateien den gleichen CRC32 Wert erhalten.

Wenn also zwei Dateien den gleichen CRC haben sollten, wäre es sinnvoll trotzdem noch zu prüfen, ob die Dateien wirklich gleichen Inhalts sind.

Wenn du Duplikate finden möchtest, dann kann ich dir SearchMyFiles von Nirsoft empfehlen.

Furtbichler 19. Jul 2013 04:55

AW: Flottes Hash-Verfahren
 
Beim Hashen von Strings ist ein ELF-Hash viel schneller als CRC. Er erzeugt bei kurzen Strings auch nicht mehr Kollisionen (bei meinen Versuchen)

Delphi-Quellcode:
Function HashFromStr(Const Value: String): Cardinal; // ELF-Hash
Var
   i: Integer;
   x: Cardinal;
Begin
   Result := 0;
   For i := 1 To Length(Value) Do Begin
     Result := (Result Shl 4) + Ord(Value[i]);
     x := Result And $F0000000;
     If (x <> 0) Then
       Result := Result Xor (x Shr 24);
     Result := Result And (Not x);
   End;
End;

p80286 19. Jul 2013 23:05

AW: Flottes Hash-Verfahren
 
Zitat:

Zitat von sx2008 (Beitrag 1221989)
CRC32 ist natürlich etwas schneller als MD4, aber bei sagen wir mal 4000 MP3-Dateien besteht rein rechnerisch die Chance von 1 zu 500000, dass zwei unterschiedliche Dateien den gleichen CRC32 Wert erhalten.

Wenn also zwei Dateien den gleichen CRC haben sollten, wäre es sinnvoll trotzdem noch zu prüfen, ob die Dateien wirklich gleichen Inhalts sind.

Vor längerer Zeit ist dieses Problem hier schon einmal diskutiert worden. Ist der Hash-Wert unterschiedlich sind auch die Dateien unterschiedlich. Bei gleichem Hash-Wert können die Dateien auch gleich sein. Sicher ist man nur mit einem binären Vergleich.

Ach ja, was manchmal übersehen wird Dateien mit unterschiedlicher Größe sind nicht gleich.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 Uhr.
Seite 2 von 2     12   

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