【问题标题】:What has the least collisions for a non unique str: md5 or sha1非唯一 str 的冲突最少:md5 或 sha1
【发布时间】:2013-01-21 12:24:33
【问题描述】:

我想为给定的字符串创建一个唯一的散列,我想知道 md5 和 sha1 的重复散列是否存在差异。

为了论证,假设以下代码:

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

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

顺便说一句。我对算法的安全性不感兴趣,我只想创建一个尽可能唯一的哈希。

【问题讨论】:

  • 如果这与安全无关,您可以考虑使用原始字符串。如果字符串比它的哈希值短,那么计算哈希就没有优势,字符串在每种情况下都会更加唯一。
  • 是的,但字符串并不短,我在获取请求中传递它,所以我不希望它“可读”。这也有很好的副作用,哈希已经被 url 转义了..

标签: hash md5 sha1 hash-collision


【解决方案1】:

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

考虑改用 SHA-256;它的摘要大小为 256 位(显然),而且还没有以有意义的方式被破坏。

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 2010-12-24
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多