【问题标题】:What is the range of possible sha1hash results?可能的 sha1hash 结果的范围是多少?
【发布时间】:2013-11-20 06:43:49
【问题描述】:

sha1 的最低和最高可能回报是多少? (关于 sha1 结果实际上是 5 个 32 位值而不是 1 个真正的 160 位值)

【问题讨论】:

  • 这个问题更适合Crypto Stack Exchange
  • SHA-1 将其 160 位视为 32 位字并不重要。我不认为我们有证据证明每个输出值都是可以达到的,但我们当然希望它们是。
  • @CodesInChoas - 并不是将真正的 160 位值视为 5 个 32 位字,而是它构建了 5 个无符号 32 位数字并将其视为 160 位。它与使用 4 个无符号 8 位数字并期望真正的 32 位数字类型的所有可能值相同。

标签: algorithm hash cryptography sha


【解决方案1】:

要创建安全散列,散列的输出必须与随机无法区分。许多随机数生成器和密钥派生方法实际上使用哈希作为最终计算。

所以“最高”的结果由全零组成,最低的由全1组成。也就是说,如果你解释结果当然是一个无符号整数。当然,准确获得这些值的机会几乎为零,因为 SHA-1 结果应该是均匀分布的。但是8个1开头的数字变化还是1/2^8==1/256,这肯定不是微不足道的。

请注意,SHA-1 的结果应被解释为位串。大多数运行时都没有非常有用的位串表示,而是使用八位字节串(又名字节数组)。我认为 SHA-1 实现会返回短裤而不是字节非常烦人。您不想因为 little-endian 和 big-endian 表示的差异而惹恼用户,而且大多数其他原语确实希望它们的输入表示为字节。

【讨论】:

  • 因此,对于短裤,您应该期待特定运行时的完整值范围。
猜你喜欢
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2012-03-27
  • 2013-04-13
  • 2020-03-19
  • 2019-06-20
  • 2023-03-25
相关资源
最近更新 更多