实施MD5:不一致的字节序?

时间:2018-02-15 23:58:54

标签: hash byte md5 bit

所以我尝试在C#中根据RFC1321实现MD5算法并且它有效,但有一个关于填充方式的一点我不明白,这里是一个例如:

如果我想哈希字符串" 1" (不带引号)这会产生以下位代表: 10001100

下一步是追加单个" 1" -Bit,由 00000001 (大端)表示,后跟" 0" -Bits ,然后是原始消息长度的64位表示(首先是低位字)。

由于原始消息的长度是8(比特),我预计要附加0000000000000000000000000000 1 000 00000000000000000000000000000000(首先是低位字)。但是,这不会产生正确的哈希值,但会附加000 1 0000000000000000000000000000 00000000000000000000000000000000。

这看起来好像突然使用了小端格式,但这看起来根本没有任何意义,所以我想还有其他一些我不知道的东西?

1 个答案:

答案 0 :(得分:2)

,对于md5,您必须以小尾数法添加消息长度。

因此,消息表示形式为“ 1”-> 49-> 00110001 ,后跟一位和零。然后按相反的字节顺序添加消息长度(最低有效字节在前)。

您还可以在以下站点上逐步检查排列:https://cse.unl.edu/~ssamal/crypto/genhash.php

md5_debug_mode