首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MD4 RFC1320提供错误的散列

MD4 RFC1320提供错误的散列
EN

Stack Overflow用户
提问于 2015-12-23 04:38:57
回答 1查看 136关注 0票数 2

我试图让我自己的MD4哈希实现工作,对于Matasano问题,并且无法获得正确的测试向量。我以为我在某个时候搞砸了什么的。

为了找出我哪里出了问题,我决定编译RFC1320中给出的参考实现,使用调试器检查这两个程序,并播放“指出差异”。我没有修改就复制/粘贴了该代码,并使用-x (“测试套件”选项)运行它。

我得到了错误的测试向量。

具体来说,我得到的输出是

代码语言:javascript
复制
MD4 test suite:
MD4 ("") = 3e8ce4256176cc6f23583a774a91316c
MD4 ("a") = 40b4c066caa949d3e0576277d2d310df
MD4 ("abc") = a013c51eca433daca5b2a594d21af1fe
MD4 ("message digest") = 40de4367b3e76cee4dc5d90372ced0cf
MD4 ("abcdefghijklmnopqrstuvwxyz") = d9b9fc5aa9bfcbefac96214ae64ede8b
MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 44e0908e086752b6c2b8738212ce278f
MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = d219055e9ccff0c40caa7efcef86e10f

如果与RFC1320 (或维基百科)上的测试向量进行比较,这是完全不正确的。

然后,我对我在网上找到的md4哈希(这一个)的另一个实现做了同样的事情,并得到了相同的错误测试向量。

我如何开始找出错误在哪里?我是不是包括了一些不正确的标准库?我的处理器架构有问题吗?搜索不正确的散列给我的结果是零,所以我必须得出结论,我是唯一有过这个问题的白痴。

非常感谢你对从哪里开始寻找的任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 18:56:30

在@vojta的帮助下,我发现问题出在global.h,在那里typedef unsigned long int UINT4需要改为typedef uint32_t UINT4。在我的机器上,一个未签名的长int是一个64位的实体,它把一切都搞砸了。

(当然,UINT2也需要是uint16_t的类型)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34428734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档