我想在我的程序中实现 MD5(用于教育)。我的理解有问题。
维基百科上写着:
- 将“1”位附加到消息
- 附加“0”位,直到消息长度为 ≡ 448 (mod 512)
- 将长度 mod (2 pow 64) 附加到消息
我的想法是这样的:
- 获取味精的大小
- 直到 size >= 64 ==> memcpy 64 字节来缓冲和计算函数
- 如果 size < 64,memcpy "size" 字节并准备填充。
现在,可以说,消息是 127 个字节。程序先取 64 个字节,计算,然后再取第二部分。占用了 63 个字节(504 位),因此需要添加填充。加 1,所以现在是 505 位。
现在怎么办?我应该将零添加到 448(mod 512),所以 448+7 个零?那么还会有两个块吗?要不然是啥?
我问是因为它对我来说看起来很奇怪;)可能很好,但是..我不知道。
在此先感谢,