我使用Crypto++从给定的密码生成MD4-Hash。但是生成的散列似乎不正确。我想我在某个地方误用了CryptoPP函数。
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
有什么想法吗?
发布于 2013-08-29 08:25:10
好吧,我自己找到了解决办法。不像我上面贴的那样管用。
在这里,正确的代码可能对其他人有用:
std::string value;
CryptoPP::Weak1::MD4 hashmd4;
CryptoPP::StringSource (password, true,
new CryptoPP::HashFilter( hashmd4,
new CryptoPP::HexEncoder(
new CryptoPP::StringSink(value)
)
)
);发布于 2014-01-28 03:48:59
hash.CalculateDigest(digest2,(字节*)密码,strlen(密码));
这应该是:
hash2.CalculateDigest(digest2, (byte*)password, strlen(password));也就是说,hash2,而不是hash。
Encoder2.Put(文摘,大小(Digest2));
这应该是:
encoder2.Put(digest2,sizeof(digest2));也就是说,digest2,而不是digest。
一些MD4哈希生成器测试的期望值是: db346d691d7acc4dc2625db19f9e3f52
是的,我就是用你在排字后发布的代码得到的。
https://stackoverflow.com/questions/18504803
复制相似问题