首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输入是块长度的倍数,为什么在结尾需要填充块?

如果输入是块长度的倍数,为什么在结尾需要填充块?
EN

Cryptography用户
提问于 2018-03-17 06:58:05
回答 1查看 703关注 0票数 3

如果输入是块长度的倍数,为什么在结尾需要填充块?我了解到,如果没有添加一个虚拟块,那么它是不具有抗碰撞能力的,但我想了解为什么会这样。

假设MD输出Zb而不是H(Zb=L)。为什么这种特殊的结构不具有抗碰撞能力的原因何在?

EN

回答 1

Cryptography用户

发布于 2018-03-17 08:17:20

假设我们有一个消息$m$,它的长度不是块长度的倍数,而我们的散列方案通过在其上附加填充$p_m$,将其转化为块长度的倍数。也就是说,$$\textsf{Pad}(m) =m \,x \,p_m,$$,其中$m \,$m\,p_m$的长度是块大小的倍数。

现在,如果长度为块大小的倍数的消息根本没有填充,那么考虑一下如果故意尝试散列修改后的消息$m‘=m \、\\、p_m$会发生什么。由于$m'$的长度是块大小的倍数,所以我们将有$$\textsf{Pad}(m') =m \,p_m = \textsf{Pad}(m).$$

由于最后的哈希值是从填充消息中计算出来的,这意味着$m$和$m'$将具有相同的哈希值。

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

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

复制
相关文章

相似问题

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