规格说明似乎没有指明如何将消息插入到所需的512位边界。
原始Tiger散列的填充方案是什么?
发布于 2014-01-29 10:52:44
为了兼容插入,我们采用了MD4族的外部结构:消息由一个'1‘位填充,后面是'0's字符串,最后消息长度为64位字,结果被划分为n 512位块。
http://www.cs.technion.ac.il/~biham/Reports/Tiger/tiger/node2.html
我假设这个64位的单词是小endian,就像Tiger的其余部分和MD4填充一样。
作为参考,描述RFC1320的MD4说:
字节序列可以解释为32位字的序列,其中每一个连续的四个字节组被解释为一个字,先给出一个低阶(最不重要)字节。...步骤1.附加填充位消息是“填充”(扩展),因此它的长度(以位为单位)与448,模512一致。也就是说,对消息进行扩展,使其距离512位长的倍数仅差64位。填充总是被执行,即使消息的长度已经一致到448,模512。填充按如下方式执行:将单个"1“位附加到消息,然后附加"0”位,使填充消息的比特长度与448模512一致。总之,至少一个比特和最多512位被附加。步骤2.将b的附加长度A 64位表示形式(添加填充位之前的消息长度)附加到上一步的结果中。如果b大于2^ 64,则只使用b的低阶64位。(这些位被附加为两个32位的单词,并按照以前的约定先追加低阶单词。)在这一点上,结果消息(在填充比特和使用b之后)的长度是512位的确切倍数。等效地,此消息的长度为16 (32位)字的确切倍数.让M0 ..。恩-1表示结果消息的单词,其中N是16的倍数。
https://crypto.stackexchange.com/questions/13193
复制相似问题