为什么这个MD5算法返回似乎是内存位置而不是散列?

问题描述:

我想围绕布拉德康特MD5算法包扎我的头。为什么这个MD5算法返回似乎是内存位置而不是散列?

你可以在这里得到它:https://github.com/B-Con/crypto-algorithms (md5.c,md5.h,md5_test.c)

而且,这里生成一个散列的例子:这个例子说,这应该是印刷http://bradconte.com/files/projects/code/md5_example.c

哈希值:

d41d8cd98f00b204e9800998ecf8427e 
900150983cd24fb0d6963f7d28e17f72 
d174ab98d277d9f5a5611c2c9f419d9f 

但对我来说它打印:

ffffffd41dffffff8cffffffd9ffffff8f00ffffffb204ffffffe9ffffff8009ffffff98ffffffe cfffffff8427e 
ffffff900150ffffff983cffffffd24fffffffb0ffffffd6ffffff963f7d28ffffffe17f72 
ffffffd174ffffffabffffff98ffffffd277ffffffd9fffffff5ffffffa5611c2cffffff9f41ffffff9dffffff9f 

这些似乎是记忆地址,而不是哈希对我?

对于C和MD5都是新的,所以我可能会做错事 - 但我觉得这个例子并不打印说明应该说的东西。

有人会关心检查吗?

谢谢!

+0

将[mcve]代码添加到问题中。 –

+0

看起来像16位值符号扩展到32位 - 可能使用'int16_t'而不是'uint16_t'? –

printfchar转换为int。结果取决于是否签署了char(因此在您的案例中得到了符号扩展)。

你确定你想使用一个加密包来犯这样的错误吗?

+0

它用于学校作业,我被告知要使用它 - 没有进一步的解释。 – Hi7651

+0

有什么我可以解决它吗? – Hi7651

+0

您可以先将值转换为无符号,或许是'(int)((unsigned char)hash [idx])',并显示该值。 –