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

时间:2012-05-30 19:48:16

标签: hash md5 implementation

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

在维基百科上写着:

  1. 将“1”位添加到消息
  2. 追加“0”位,直到消息长度为位≡448(mod 512)
  3. 将长度mod(2 pow 64)附加到消息
  4. 我的想法就是这样:

    1. 获取msg的大小
    2. 直到尺寸> = 64 ==> memcpy 64字节来缓冲和计算函数
    3. 如果尺寸< 64,memcpy“size”字节并准备填充。
    4. 现在,让我们说,消息是127个字节。程序占用前64个字节,计算,然后想要取第二部分。取63个字节(504位),因此需要添加填充。添加1,现在是505位。

      现在怎么办?我应该添加到448(mod 512)的零,所以448 + 7个零?那么会有两个块呢?或者是什么?

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

      提前致谢,M

1 个答案:

答案 0 :(得分:1)

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