1

我正在研究 SHA-256 算法。填充由单个“1”组成,后跟尽可能多的 0,以使块的大小与 448 mod(512) 一致,然后消息的大小(不包括 1 和填充)为 64位无符号整数。

我不清楚'1'的原因。在非官方消息来源中出现的一个原因是它可以防止生日攻击,但最后的长度似乎足以达到这个目的。在其他地方,据说需要 1 来使填充 Merkle–Damgård 兼容(MD 兼容),但除非我真的遇到了什么问题,否则最后的尺寸字段显然就足够了。见: https ://en.wikipedia.org/wiki/Merkle%E2%80%93Damg%C3%A5rd_construction#MD-compliant_padding

最后,一位消息人士写道,这是处理空字符串(为什么?)和另一个使填充可逆(为什么?)所必需的。当我发现这么多不同的解释时,我总是很怀疑。谁能用一个例子来解释我。

顺便说一句,这种填充在 ISO/IEC 9797-1 中定义为填充方法 2(没有解释)。

4

0 回答 0