我想在我的程序中实现MD5(用于教育)。而且我在理解方面有问题。
在维基百科上写道:
- 将"1"位附加到消息
- 附加"0"位,直到消息长度(以位为单位)≡ 448 (mod 512)
- 将长度 mod (2 pow 64) 附加到消息
我的想法是这样的:
- 获取味精的大小
- 直到大小>= 64 ==> MEMCPY 64 字节来缓冲和计算函数
- 如果大小<64,则 memcpy "大小"字节并准备填充。
现在,假设消息是 127 字节。程序取前 64 个字节,计算,然后想要取第二部分。占用了 63 字节(504 位),因此需要添加填充。加 1,所以现在是 505 位。
现在怎么办?我应该将零加到 448(mod 512),那么 448+7 个零?所以又会有两块?还是什么?
我问,对我来说看起来很奇怪;)可能它很好,但是..我不知道。
提前感谢,M
维基百科的描述是正确的。没有办法设计一个至少在某些时候不会添加额外块的填充方案。(可以通过计数来证明。