0

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

维基百科上写着:

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

我的想法是这样的:

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

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

现在怎么办?我应该将零添加到 448(mod 512),所以 448+7 个零?那么还会有两个块吗?要不然是啥?

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

在此先感谢,

4

1 回答 1

1

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

于 2012-05-30T19:52:40.190 回答