【问题标题】:What is the maximum number of SHA-1 hashes?SHA-1 哈希的最大数量是多少?
【发布时间】:2011-11-14 10:21:56
【问题描述】:

显然,由于 SHA-1 散列每次产生 40 个字符,因此可能的散列数量是有限的——有人知道确切的数量吗?

【问题讨论】:

  • 它不会“产生” 40 个字符。它确实产生了 160 位的散列。如果您以十六进制格式查看它们,您会看到 40 个十六进制数字。
  • 没有。 40 个有符号/无符号字符“通常”为 320 位(8 位/字符)。 SHA-1 是 160 位 = 20 字节 = 40 个十六进制数字。你问了一个关于有多少 SHA-1 哈希的精确问题。举个例子,如果我在 base64 中编写一个 SHA-1,我会得到一个长 28 个字符的字符串(其中 1 个是固定的并且是终止 =
  • 好的,SHA-1 哈希由 160 位 = 40 个十六进制数字组成,如果这样可以更好,通常编码为 40 个字符串。我最后的评论确实不正确,考虑到我用 C 编写了一个紧凑的 SHA1er,这很糟糕。
  • 我担心你是一个初级程序员,认为 DVD-ROM 是一个杯架 :-) 但是如果你写了一个 SHA-1er,那么你可以想任何你想要的 SHA1 哈希:- ) 在这种情况下,它变成了“明智的选择”:-)

标签: hash cryptography sha1 sha hash-collision


【解决方案1】:

SHA-1 哈希有 160 位,因此有 2160 个。
(2160 = 1461501637330902918203684832716283019655932542976 ~= 1.46 x 1048)

请注意,由于您的消息空间比可能的哈希值大得多,因此必然会发生冲突。

还要注意,碰撞的可能性比您想象的要高得多。多亏了Birthday paradox,只有 280 条消息发生冲突的概率为 50%。 (即:只有 23 个人,2 个人生日相同的概率为 50%)。

【讨论】:

  • 我猜这个问题是问哈希函数是否是满射的。
  • 谷歌计算:1.46150164 × 10^48 :-)
  • 我要补充一点,可能的 SHA-1 的数量非常接近 sqrt(googol)(只有 100 倍):-) :-)
  • @NullUser:您似乎混合了满射和双射。拥有一个满射性或非满射性的证明都很可能构成某种功能的破坏。查看Is SHA-512 bijective when hashing a single 512-bit block? 以获取类似的问题(和答案)。
  • 如果你能产生 SHA1 冲突,我会给你买啤酒。或者即使你可以生成 2^80 条没有一条消息。
【解决方案2】:

SHA-1 产生 160 位输出,它应该能够产生几乎任何 160 位序列,有 2160 个这样的序列,即接近到 14610 亿 亿 亿 亿 亿 。有点大。

然而我们没有证据表明它们中的每一个都是可以访问的。如果可能的输出数量显着低于 2160,则对 SHA-1 安全性不利;例如,如果只有 1/4 可以到达(2158),则针对原像攻击的安全性将除以 4,针对碰撞的安全性将减半。目前尚不知道 SHA-1 存在此类问题(在抗碰撞方面, SHA-1 存在已知的弱点,但没有那个)。

有可能(但至少有点令人惊讶)无法达到几个 160 位输出。预计这将保持不可知。在某种程度上,能够证明 SHA-1 可能的输出覆盖整个 160 位空间会令人担忧:这样的证明需要对 SHA-1 的数学结构进行大量分析,而 SHA-1 的安全性很大程度上依赖于这种难以处理的分析。

【讨论】:

    【解决方案3】:

    SHA-1 由 5 个 32 位整数组成。

    那是 4294967296^5 或 2^160

    或 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976 种可能性

    把它放在眼里

    可能的 SHA-1 值总数:1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976 地球上的总水量:365,904,000,000,000,000,000

    这包括每一个海洋、海洋、湖泊等 - source

    在这一点上,碰撞的可能性只是理论上的。仍在等待听到一个。

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 2012-03-31
      • 2019-02-05
      • 2013-12-11
      • 1970-01-01
      • 2016-02-03
      • 2010-11-06
      • 1970-01-01
      • 2017-02-26
      相关资源
      最近更新 更多