Erstellen Sie einen 6-stelligen "Hash" aus einer Datei

729
kabZX

Ich brauche ein Werkzeug, um aus einer Datei einen 6-stelligen "Hash" zu generieren. Natürlich sollten identische Dateien immer denselben Hash erzeugen. Was ist ein guter Weg, dies zu tun?

  1. Dies ist auf einem Vanilla-Debian-System erforderlich.
  2. Ich verstehe, dass mit nur 6-stelligen Hash-Kollisionen auftreten können, aber die Hoffnung ist, dass dies unwahrscheinlich ist. Im Falle einer Kollision können MD5-Hashes verwendet werden.
  3. Eingabedateien werden höchstwahrscheinlich PDFs sein, wenn dies einen Unterschied macht.
0
Sie haben nicht gesagt, was Sie mit "Ziffer" meinen. Ich bin sicher, dass Kamil Maciorowskis Antwort für Sie gut funktioniert, aber Sie können die Wahrscheinlichkeit von Kollisionen reduzieren, indem Sie `crc32` (Teil des` libarchive-zip-perl`-Pakets) verwenden und dann die letzten sechs der acht Hex-Ziffern konvertieren bis zu vier Zeichen durch Umcodierung in base64 (`[a-zA-Z0-9 / +]`), wodurch das gleiche Eindeutigkeitsniveau wie bei crc32 beibehalten wird. Die Umkodierung kann mit ` | xxd -r | base64`. Wenn Sie interessiert sind, dokumentiere ich es in einer Antwort. AFH vor 6 Jahren 0

1 Antwort auf die Frage

1
Kamil Maciorowski

Holen Sie sich eine Hash-Funktion mit mehr Ziffern und verkürzen.

Beispiel (unter Linux):

md5sum file | cut -c -6 
Macht es einen Unterschied, ob ich die erste oder letzte 6 nehme? kabZX vor 6 Jahren 0
@kabZX Nein. Bleib natürlich bei deiner Wahl. Kamil Maciorowski vor 6 Jahren 1