一个非唯一字符串,哪种哈希算法(md5还是sha1)发生碰撞最少?

3
我希望为给定的字符串创建一个唯一的哈希值,并想知道使用md5和sha1生成的重复哈希值之间是否有区别。
为了举例说明,假设以下代码:
foo = "gdfgkldng"
bar = "fdsfdsf"
md5(foo)
>>>> "25f709d867523ff6958784d399f138d9"
md5(bar)
>>>> "25f709d867523ff6958784d399f138d9"

在SHA1和MD5之间,这种情况发生的概率有区别吗?另外,如果我使用有很大重叠的字符串(“blabla1”,“blabla2”),是否会有差异?

顺便说一下,我不关心算法的安全性,我只想创建尽可能唯一的哈希值。


如果这与安全无关,您可以考虑使用原始字符串。如果字符串比其哈希值短,则计算哈希没有优势,在每种情况下,该字符串都将更加独特。 - martinstoeckli
这是正确的,但字符串并没有变短,而且我将其传递给一个get请求,所以我不希望它“可读”。这也有一个好的副作用,哈希已经被url转义了。 - RickyA
1个回答

5

MD5的摘要大小为128位。SHA-1的摘要大小为160位。即使忽略已发现的弱点,MD5也会产生更多碰撞,只是因为它的输出空间较小。

考虑改用SHA-256,它具有256位的摘要大小(显然),并且此外还没有被有效地攻破过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接