Что имеет наименьшее количество столкновений для неуникальной str: md5 или sha1

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

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

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

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

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


person RickyA    schedule 06.02.2013    source источник
comment
Если это не связано с безопасностью, вы можете вместо этого использовать исходную строку. Если строка короче, чем ее хеш-значение, тогда нет никакого преимущества в вычислении хеша, строка будет более уникальной в каждом случае.   -  person martinstoeckli    schedule 07.02.2013
comment
Это правда, но строка не короче, и я передаю ее в запросе на получение, поэтому не хочу, чтобы она читалась. Это также имеет приятный побочный эффект: хеш-адрес уже экранирован.   -  person RickyA    schedule 07.02.2013


Ответы (1)


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

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

person Cairnarvon    schedule 06.02.2013