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 19. Jul 2013
Antwort Antwort
Seite 2 von 2     12   
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#11

AW: Flottes Hash-Verfahren

  Alt 8. Jul 2013, 14:52
für
Vollständigkeit/Fehlerfreiheit
wurde eigentlich CRC erfunden -- da sollte auch etwas schneller sein bzw. weniger CPU beanspruchen

mfg
  Mit Zitat antworten Zitat
ByTheTime

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

AW: Flottes Hash-Verfahren

  Alt 18. Jul 2013, 21:58
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
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: Flottes Hash-Verfahren

  Alt 18. Jul 2013, 22:41
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.
fork me on Github
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#14

AW: Flottes Hash-Verfahren

  Alt 19. Jul 2013, 04:55
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;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Flottes Hash-Verfahren

  Alt 19. Jul 2013, 23:05
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:21 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