【问题标题】:Why SHA2 has a 384 bit version?为什么 SHA2 有 384 位版本?
【发布时间】:2018-04-05 06:46:44
【问题描述】:

我知道有 256 和 512 版本,因为它们都是 2 的幂。但是 384 是从哪里来的?

我知道 384 的二进制表示是 110000000,但我不明白其中的逻辑。

它不在256和512之间的中间。它甚至不是对数中间。

为什么是 384?

【问题讨论】:

  • 为什么不是 384?谁说它必须是 2 的幂?
  • 这是另一个问题。我接受 2 的幂作为惯例。但是当我看到一些不符合惯例的东西时,我就会开始思考为什么会这样。从下面的答案我可以判断它确实不是那么明显。

标签: algorithm hash sha


【解决方案1】:

快速浏览维基百科发现:

SHA-256 和 SHA-512 是使用 32 位和 分别为 64 位字。他们使用不同的班次数量和 加法常数,但它们的结构实际上是 相同,只是回合数不同。 SHA-224 和 SHA-384 是前两个的简单截断版本,计算为 不同的初始值。

查看所有变体之间的comparison,似乎 SHA-384 比 SHA-512(更长的版本)更能抵抗length extension attacks。

您可以在 Cryptography Stack Exchange 上找到更详细的答案:here。

【讨论】:

  • 这是一个非常好的解释。但我现在还有一个问题。 384 是 256 到 512 之间 SHA2 抗性最强的版本吗?
  • 好像不是。 SHA-512 有一个修改版本,称为 SHA-512/256,它似乎更能抵抗此类攻击。更多信息在这里:link 和答案中提到的 Wiki 文章 - 关于SHA-512/t的部分
  • 然后回到最初的问题。为什么是 384 和 224?
  • 我没有遵循它背后的所有数学原理,所以很遗憾,我无法回答这个问题。从如何获得它们来看,我最好的猜测是,就扩展攻击抵抗力而言,它们提供了最好的结果(没有显着修改初始算法)。
【解决方案2】:
256 + 128 = 384

只不过是上面提到的 2 的幂的两个值的相加!

【讨论】:

  • 所以他们只取了 256 而不是乘以 2 而是乘以 1.5
猜你喜欢
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 2023-03-03
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多