MD5 и т. Д. Как хеш-функция - PullRequest
4 голосов
/ 05 ноября 2010

Допустим, вы планируете разработать хеш-функцию, которая будет генерировать ключи в диапазоне 0-256.Будет ли использование первых двух цифр MD5-digest отличной идеей для равномерного распределения?Что вы думаете по этому поводу?Дорого ли это слово md5 () (2-10 букв)?

Я знаю, что это грубое определение требований, но было бы здорово обсудить это.

Ответы [ 4 ]

4 голосов
/ 05 ноября 2010

Нет смысла использовать криптографический хеш для чего-то такого простого, как создание 3-х значных хешей.Вам лучше использовать более простой хеш там.

Я не уверен, насколько конкретно MD5 дорог по сравнению с другими, но есть много лучших способов создать небольшой хеш (см. статья для некоторых идей алгоритма).

3 голосов
/ 05 ноября 2010

Вы можете попробовать вычислить 8-бит CRC .

1 голос
/ 05 ноября 2010

MD5 предназначен для равномерного распределения входных данных по всем выходным байтам, поэтому он так же хорош, как и любая другая общая хэш-функция - звучит как немного избыточно, если вы хотите только 256 значений.

Обратите внимание на выводMD5 имеет размер 128 байт (16 байт), шестнадцатеричные цифры - это только текстовое представление, так что в действительности нет двух первых цифр MD5 - просто используйте нижние 8 бит.

0 голосов
/ 05 ноября 2010

Вы не объяснили, как вы собираетесь использовать хеш, и что вы будете делать с коллизиями, которые неизбежны, если у вас есть только 256 выходных значений.

Я думаю, что даже MD5 (который больше не является криптографически безопасным) является избыточным для вероятных приложений.

Я бы, вероятно, выбрал алгоритм CRC (проверка циклическим избыточным кодом), который сгенерирует для вас 16-битное или 32-битное число и, вероятно, даст вам достаточно хорошее распределение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...