【发布时间】:2019-07-13 19:17:36
【问题描述】:
所以我尝试在 C# 中根据RFC1321 实现 MD5 算法并且它可以工作,但是关于填充的执行方式有一点我不明白,这是一个示例:
如果我想对字符串“1”(不带引号)进行哈希处理,则会产生以下位表示:10001100
下一步是添加单个“1”位,由 00000001(大端序)表示,然后是“0”位,然后是 64 位表示原始消息的长度(低位字在前)。
由于原始消息的长度为 8(位),我预计要附加 00000000000000000000000000001000 000000000000000000000000000000000(低位字优先)。但是,这不会导致正确的哈希值,但附加 00010000000000000000000000000000 00000000000000000000000000000000 会。
这看起来好像突然使用了 little-endian 格式,但这似乎根本没有任何意义,所以我想一定还有什么我遗漏的东西?
【问题讨论】: