#ruby #md5
#ruby #md5
Вопрос:
Возможно ли создать хэш md5 длиной 8 символов?
Комментарии:
1. К вашему СВЕДЕНИЮ: при хэшировании 2000 строк с использованием 8 шестнадцатеричных разрядов вероятность коллизии хэшей составляет 0,047% (~ 1/2000 ).
Ответ №1:
MD5 создает 16-байтовые хэши. Вы, конечно, можете обрезать строку до восьми символов, как в myString[0..7]
, но обратите внимание, что это больше не допустимый хэш MD5.
Ответ №2:
require 'digest'
Digest::MD5.hexdigest("My secret")[0...8]
Комментарии:
1. В конечном итоге вы столкнетесь с некоторыми коллизиями, верно? Это как бы сводит на нет использование MD5.
2. Это зависит от того, сколько строк вы хэшируете. Я просто создаю приложение, которому необходимо хэшировать строки для генерации имен файлов, но никогда не будет больше пары тысяч разных строк. В таком случае 8-символьный хэш вряд ли приведет к коллизиям.
Ответ №3:
Я думаю, что md5 имеет общую длину в зависимости от того, что он шифрует, поэтому вы не можете заранее определить длину хэша md5.
Ответ №4:
строка длиной 8 не является допустимым хэшем md5.