我理解的是:当我们将消息解析为512位消息块时。然后,我们将第一个消息块扩展到64个条目数组,并从压缩函数开始。
如果消息长度超过512位,会发生什么情况?因此,我们将收到几个消息块,但是这些信息块在哪里被输入到函数中。
发布于 2018-01-19 22:01:38
您的问题本质上是如何在梅尔克-达格路结构中处理消息长度。然而,您的描述是有缺陷的,所以让我们澄清一些事情:
使用这种构造的全部目的是构建一个哈希函数,它将任意长度的输入映射到固定长度的输出,给定一个压缩函数(希望能够抵抗冲突,等等)。
首先,输入消息被分割成大小相同的$n$块--按照您的示例,让我们假设这个块大小为512位(如在MD5中,以及较小的SHA-2算法)。然后,消息被“填充”(扩展),直到消息的总长度。
$l_{msg} \equiv 448美元mod 512美元
最后,添加到最后一个块的64位扩展,它本质上是初始消息长度的表示。现在所有的$n$块都是512个比特.随后,将压缩函数应用于所有块的循环中,在每一轮中它都将当前块和前一轮的结果作为输入。在$n$迭代之后,将生成最终的哈希值。
如果消息长度超过512位,会发生什么情况?
一旦您的消息长度超过448位,就需要第二个块。因此,较长的消息只会增加块的数量,因此需要循环迭代。
发布于 2018-01-26 07:29:01
如果输入消息大于512位,则将输入以适合长度(512位)的“块”(读:段)切分,并依次输入散列压缩函数。
请看,用外行人的话说,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:)。
https://crypto.stackexchange.com/questions/54852
复制相似问题