MD5 - 添加消息长度

时间:2015-04-08 17:30:24

标签: c byte md5

我想为MD5算法创建块。这是我的代码:

uint8_t buffer[64];
for (int i = size + 1; i < 56; i++)
    buffer[i] = 0;

但我不知道如何在最后的64位上添加消息长度。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你宣布长度为8的buffer,你怎么期望这个工作:

for (int i = size + 1; i < 56; i++)
    buffer[i] = 0;

超出界限?

好的,你从第56个元素说要存储长度。为什么不 做这样的事情:

memcpy(&buffer[56], &length, sizeof(int)); // you may want to check sizeof(int) on your machine to know how many bytes were written

但是你应该注意字节顺序。这将根据您的机器具有的字节顺序写出length。如果你想将它存储在一些特定的字节序中,也许你可以使用逐位运算符手动完成它。查看更多信息herehere

如果您希望length具有固定大小,则可以将其声明为uint32_t并直接在memcpy中使用4作为最后一个参数。