Что имеет наименьшее количество коллизий для неуникальной строки: md5 или sha1
Я хочу создать уникальный хеш для заданной строки, и мне было интересно, есть ли разница в дублирующих хешах для md5 и sha1.
Давайте в качестве аргумента примем следующий код:
foo = "gdfgkldng"
bar = "fdsfdsf"
md5(foo)
>>>> "25f709d867523ff6958784d399f138d9"
md5(bar)
>>>> "25f709d867523ff6958784d399f138d9"
Есть ли разница в вероятности этого между sha1 и md5? Также: если я использую строки с большим перекрытием ("blabla1", "blabla2"), есть ли разница?
КСТАТИ. Меня не интересует безопасность алгоритмов, я просто хочу создать хеш, который будет настолько уникальным, насколько это возможно.
1 ответ
MD5 имеет размер дайджеста 128 бит. SHA-1 имеет размер дайджеста 160 бит. Даже игнорируя обнаруженные недостатки, MD5 будет производить больше коллизий только потому, что у него меньше выходное пространство.
Попробуйте вместо этого использовать SHA-256; он имеет размер дайджеста 256 бит (очевидно), и, кроме того, не был разбит осмысленно.