MD5 算法 - 如果最后一个块是 63 字节怎么办



我想在我的程序中实现MD5(用于教育)。而且我在理解方面有问题。

在维基百科上写道:

  1. 将"1"位附加到消息
  2. 附加"0"位,直到消息长度(以位为单位)≡ 448 (mod 512)
  3. 将长度 mod (2 pow 64) 附加到消息

我的想法是这样的:

  1. 获取味精的大小
  2. 直到大小>= 64 ==> MEMCPY 64 字节来缓冲和计算函数
  3. 如果大小<64,则 memcpy "大小"字节并准备填充。

现在,假设消息是 127 字节。程序取前 64 个字节,计算,然后想要取第二部分。占用了 63 字节(504 位),因此需要添加填充。加 1,所以现在是 505 位。

现在怎么办?我应该将零加到 448(mod 512),那么 448+7 个零?所以又会有两块?还是什么?

我问,对我来说看起来很奇怪;)可能它很好,但是..我不知道。

提前感谢,M

维基百科的描述是正确的。没有办法设计一个至少在某些时候不会添加额外块的填充方案。(可以通过计数来证明。

相关内容

最新更新