首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果SHA-256输入太长(大于512位),会发生什么情况?

如果SHA-256输入太长(大于512位),会发生什么情况?
EN

Cryptography用户
提问于 2018-01-19 21:02:05
回答 2查看 16.5K关注 0票数 5

我理解的是:当我们将消息解析为512位消息块时。然后,我们将第一个消息块扩展到64个条目数组,并从压缩函数开始。

如果消息长度超过512位,会发生什么情况?因此,我们将收到几个消息块,但是这些信息块在哪里被输入到函数中。

EN

回答 2

Cryptography用户

回答已采纳

发布于 2018-01-19 22:01:38

您的问题本质上是如何在梅尔克-达格路结构中处理消息长度。然而,您的描述是有缺陷的,所以让我们澄清一些事情:

使用这种构造的全部目的是构建一个哈希函数,它将任意长度的输入映射到固定长度的输出,给定一个压缩函数(希望能够抵抗冲突,等等)。

首先,输入消息被分割成大小相同的$n$块--按照您的示例,让我们假设这个块大小为512位(如在MD5中,以及较小的SHA-2算法)。然后,消息被“填充”(扩展),直到消息的总长度。

$l_{msg} \equiv 448美元mod 512美元

最后,添加到最后一个块的64位扩展,它本质上是初始消息长度的表示。现在所有的$n$块都是512个比特.随后,将压缩函数应用于所有块的循环中,在每一轮中它都将当前块和前一轮的结果作为输入。在$n$迭代之后,将生成最终的哈希值。

如果消息长度超过512位,会发生什么情况?

一旦您的消息长度超过448位,就需要第二个块。因此,较长的消息只会增加块的数量,因此需要循环迭代。

票数 7
EN

Cryptography用户

发布于 2018-01-26 07:29:01

如果输入消息大于512位,则将输入以适合长度(512位)的“块”(读:段)切分,并依次输入散列压缩函数。

请看,用外行人的话说,SHA-256处理这样的事情:

  1. init SHA-256
  2. 当有输入块时,使用下一个输入块更新哈希压缩函数(如果需要,可以将其更新为512位)。
  3. 最后确定SHA-256并返回结果(这是哈希输出)

正如“2”中所提到的,当SHA-256到达小于512位的块时,就会相应地填充…。因此,输入到哈希压缩函数的所有输入块都是512位长的。有关填充本身的详细信息,请参阅“沙-2填充物的输入信息是怎样的?”和“的256:填充512位长的消息”。

注意: SHA-256可以处理的最大消息大小是$2^{64}-1$位,这意味着sHA-256‘S压缩函数最多可以处理512位输入块的$\lceil(2^{64}+64)/512\rceil$。在(不太可能的)情况下,当您试图输入的输入超过最大值时,哈希函数应该拒绝输出(read:)。

票数 9
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/54852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档