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

Hash MD5算法-如果最后一个块是63字节,该怎么办?,hash,md5,implementation,Hash,Md5,Implementation,我想在我的课程(教育)中实施MD5。 我在理解上有问题 维基百科上写着: 将“1”位附加到消息 追加“0”位,直到消息长度以位为单位≡ 448(512型) 将长度模块(2 pow 64)附加到消息 我的想法是: 得到味精的大小 直到大小>=64==>memcpy 64字节来缓冲和计算函数 如果大小

我想在我的课程(教育)中实施MD5。 我在理解上有问题

维基百科上写着:

  • 将“1”位附加到消息
  • 追加“0”位,直到消息长度以位为单位≡ 448(512型)
  • 将长度模块(2 pow 64)附加到消息
  • 我的想法是:

  • 得到味精的大小
  • 直到大小>=64==>memcpy 64字节来缓冲和计算函数
  • 如果大小<64,则memcpy“size”字节并准备填充
  • 现在,假设消息是127字节。程序先计算前64个字节,然后再计算第二部分。占用63字节(504位),因此需要添加填充。加1,现在是505位

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

    我这样问是因为它看起来很适合我;)可能很好,但是。。我不知道


    提前感谢,M

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