Я хочу создать уникальный хеш для данной строки, и мне было интересно, есть ли разница в повторяющихся хэшах для md5 и sha1.

Допустим, в качестве аргумента, следующий код:

foo = "gdfgkldng"
bar = "fdsfdsf"
md5(foo)
>>>> "25f709d867523ff6958784d399f138d9"
md5(bar)
>>>> "25f709d867523ff6958784d399f138d9"

Есть ли разница в вероятности этого между sha1 и md5? Также: если я использую строки с большим перекрытием («blabla1», «blabla2»), есть ли разница?

КСТАТИ. Меня не интересует безопасность алгоритмов, я просто хочу создать хеш, который будет как можно более уникальным.

3
RickyA 6 Фев 2013 в 14:30
Если это не связано с безопасностью, вы можете вместо этого использовать исходную строку. Если строка короче, чем ее хеш-значение, тогда нет преимущества в вычислении хеша, строка будет более уникальной в каждом случае.
 – 
martinstoeckli
7 Фев 2013 в 00:08
Это правда, но строка не короче, и я передаю ее в запросе на получение, поэтому я не хочу, чтобы она была «читаемой». Это также имеет приятный побочный эффект - хеш-адрес уже экранирован.
 – 
RickyA
7 Фев 2013 в 01:25

1 ответ

Лучший ответ

MD5 имеет размер дайджеста 128 бит. SHA-1 имеет размер дайджеста 160 бит. Даже игнорируя обнаруженные слабые места, MD5 будет производить больше коллизий только потому, что у него меньшее пространство для вывода.

Вместо этого рассмотрите возможность использования SHA-256; он имеет размер дайджеста 256 бит (очевидно) и, кроме того, не был серьезно поврежден.

5
Cairnarvon 6 Фев 2013 в 14:36