首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MD4散列与Crypto++会导致错误的哈希吗?

MD4散列与Crypto++会导致错误的哈希吗?
EN

Stack Overflow用户
提问于 2013-08-29 07:32:14
回答 2查看 335关注 0票数 0

我使用Crypto++从给定的密码生成MD4-Hash。但是生成的散列似乎不正确。我想我在某个地方误用了CryptoPP函数。

代码语言:javascript
复制
CryptoPP::Weak1::MD4 hash2;
byte digest2[CryptoPP::Weak1::MD4::DIGESTSIZE];
hash.CalculateDigest(digest2, (byte*)password, strlen(password));
CryptoPP::HexEncoder encoder2;
std::string output2;
encoder2.Attach(new CryptoPP::StringSink(output2));
encoder2.Put(digest,sizeof(digest2));
encoder2.MessageEnd();
printf("END %s \n", output2.c_str());

我的变量密码包含值"test“。印刷输出如下:

完: 3CC942AE509EC070B2548515E00F8CE8

一些MD4哈希生成器测试的期望值是:

db346d691d7acc4dc2625db19f9e3f52

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-29 08:25:10

好吧,我自己找到了解决办法。不像我上面贴的那样管用。

在这里,正确的代码可能对其他人有用:

代码语言:javascript
复制
std::string value;
CryptoPP::Weak1::MD4 hashmd4;
CryptoPP::StringSource (password, true,
  new CryptoPP::HashFilter( hashmd4,
    new CryptoPP::HexEncoder(
      new CryptoPP::StringSink(value)
    )
  )
);
票数 0
EN

Stack Overflow用户

发布于 2014-01-28 03:48:59

hash.CalculateDigest(digest2,(字节*)密码,strlen(密码));

这应该是:

代码语言:javascript
复制
 hash2.CalculateDigest(digest2, (byte*)password, strlen(password));

也就是说,hash2,而不是hash

Encoder2.Put(文摘,大小(Digest2));

这应该是:

代码语言:javascript
复制
encoder2.Put(digest2,sizeof(digest2));

也就是说,digest2,而不是digest

一些MD4哈希生成器测试的期望值是: db346d691d7acc4dc2625db19f9e3f52

是的,我就是用你在排字后发布的代码得到的。

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

https://stackoverflow.com/questions/18504803

复制
相关文章

相似问题

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