Создайте 6-значный "хэш" из файла

658
kabZX

Мне нужен инструмент для генерации 6-значного "хеша" из файла. Естественно, идентичные файлы всегда должны создавать один и тот же хэш. Какой хороший способ сделать это?

  1. Это требуется в ванильной системе Debian.
  2. Я понимаю, что только с 6-значными хэш-кодами могут происходить коллизии, но есть надежда, что это будет маловероятно. В случае столкновения могут использоваться хеши MD5.
  3. Входные файлы, скорее всего, будут PDF-файлами, если это что-то изменит.
0
Вы не сказали, что вы подразумеваете под «цифрой». Я уверен, что ответ Камиля Мачоровского будет хорошо работать для вас, но вы можете уменьшить вероятность коллизий с помощью `crc32` (часть пакета` libarchive-zip-perl`), а затем преобразовать последние шесть из 8 шестнадцатеричных цифр до четырех символов путем перекодирования в base64 (`[a-zA-Z0-9 / +]`), тем самым сохраняя тот же уровень уникальности, что и crc32. Часть перекодирования может быть выполнена с помощью ` | xxd -r | base64`. Если вам интересно, я полностью документирую это в ответе. AFH 6 лет назад 0

1 ответ на вопрос

1
Kamil Maciorowski

Получить любую хэш-функцию с большим количеством цифр и усечь.

Пример (в Linux):

md5sum file | cut -c -6 
Имеет ли значение, беру ли я первую или последнюю 6? kabZX 6 лет назад 0
@kabZX Нет. Просто придерживайтесь своего выбора, конечно. Kamil Maciorowski 6 лет назад 1

Похожие вопросы