Mahlzeit!
Helmut Schellong <
r...@schellong.biz> wrote:
> On 05/28/2022 14:02, Christian Garbs wrote:
>> Wenn es Dir nicht um Kryptographie geht, kannst Du Dir auch xxHash mal
>> angucken, das soll auch sehr schnell sein:
>>
>>
https://github.com/Cyan4973/xxHash
>>
>> Ein Vergleich mit CRC64 ist auf der xxHash-Seite nicht zu finden, da
>> müsstest Du selber messen.
>
> Ich habe mir das angesehen.
> Aber mir mißfällt dort die Präsentation, und eine entsprechende hash-Funktion ist nicht auffindbar.
> Alle Quelldateien (xxhash.c ...) sind in Wirklichkeit html-Dateien.
Die sind nicht "in Wirklichkeit html-Dateien", der Source wird nur als
HTML gerendert, wenn man die für die Anzeige im Browser gedachten URLs
benutzt.
xxhash.c ist ziemlich leer, die Funktionalität wird irgendwo in
xxhash.h liegen, ich habe mir das aber nicht genauer angeguckt.
> Ich finde dort kein Archiv.
Du kannst bei GitHub:
- auf die raw-Ansicht umschalten:
https://raw.githubusercontent.com/Cyan4973/xxHash/dev/xxhash.h
- das ganze Git-Repository runterladen:
git clone
https://github.com/Cyan4973/xxHash.git
- den aktuellen Stand als ZIP exportieren:
https://github.com/Cyan4973/xxHash/archive/refs/heads/dev.zip
>> Dort wird auch das SMHasher-Projekt erwähnt, das scheint eine
>> Testsuite für Hashes zu sein, wie oft sie Kollisionen produzieren etc.
>> Das wäre dann ggf. ein zweites Kriterium neben der Geschwindigkeit.
>
> Dazu hatte ich schon etwas zur Abschätzung gepostet:
>
https://en.wikipedia.org/wiki/Birthday_problem#Probability_table
Aber halt nicht gemessen. Vielleicht ist CRC64 deutlich schlechter,
was Kollisionen angeht.
> Gerade weil ich das seit langem weiß, suchte ich eine schnellere Alternative zu SHA###.
> Ich verwende für meine paar großen Dateien Backup zur Cloud zwar SHA3-256.
> Jedoch mir fehlt eigentlich noch eine Tabellendatei mit Zeitstempeln, Size und Hashes
> für meine etwa 35000 einzelnen Dateien auf Speicherkarte und separater Festplatte.
> Und genau dafür will ich nicht SHA256 verwenden.
> CRC64 dürfte ausreichen.
Die Erstellung einer solchen Tabelle ist, unabhängig vom Algorithmus,
eine Zeile Shellskript, die je nach Langsamkeit halt einmal über Nacht
läuft:
find -type f | while read file; do echo "$(stat -c "%s %X %Y %Z" "$file") $(sha256sum "$file")"; done
(Das kommt nicht mit Zeilenumbrüchen in Dateinamen klar, dafür müsste
man dann mit -print0 usw. arbeiten.)
Mir wäre da der Aufwand, erstmal einen Hash-Algorithmus zu
implementieren, zu hoch.
Zwei kurze Tests mit dem Skript und sha256sum:
- Mein $HOME (~14GB in 256766 Dateien) hat er in 6m39s durchgeackert.
Da sind haufenweise kleine Dateien dabei, die dürften teuer sein.
- Mein Spiele-Ordner hat ~144GB in 257884 Dateien, das hat 19m49s gedauert.
Und das Skript ist noch in keinster Weise optimiert, das könnte ja
z.B. mehrere Dateien gleichzeitig prüfen.
Gruß
Christian
--
....Christian.Garbs....................................
https://www.cgarbs.de
Outside of a dog, a book is man's best friend. Inside of a dog, it is
too dark to read. (Groucho Marx)