使用Crypto++进行MD4哈希会导致错误的哈希
MD4 hashing with Crypto++ results in wrong hash?
我使用Crypto++从给定密码生成MD4哈希。但是生成的哈希似乎不正确。我想我在某个地方滥用了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"。打印输出为:
结束3cc942ae09ec070b2548515e00f8ce8
一些MD4哈希生成器测试的预期值为:
数据库346d691d7acc4dc2625数据库19f9e3f52
有什么想法吗?
好吧,我自己找到了解决方案。它不像我上面发布的那样工作。
这里是正确的代码,它可能对其他人有用:
std::string value;
CryptoPP::Weak1::MD4 hashmd4;
CryptoPP::StringSource (password, true,
new CryptoPP::HashFilter( hashmd4,
new CryptoPP::HexEncoder(
new CryptoPP::StringSink(value)
)
)
);
hash.CalculateDigest(digest2,(byte*)password,strlen(password));
这应该是:
hash2.CalculateDigest(digest2, (byte*)password, strlen(password));
也就是说,hash2
,而不是hash
。
encoder2.Put(摘要,sizeof(digest2));
这应该是:
encoder2.Put(digest2,sizeof(digest2));
也就是说,digest2
,而不是digest
。
一些MD4哈希生成器测试的预期值为:
数据库346d691d7acc4dc2625数据库19f9e3f52
是的,这就是我使用你在拼写错误修复后发布的代码得到的。
相关文章:
- C++哈希表中,两个相同的实现,但一个给出错误
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 错误:哈希函数必须可使用键类型的参数进行调用
- 代码块中的哈希库++库"No such file or directory"错误
- 错误:"哈希"不是类模板
- 使用对数据类型的向量的哈希表中的分段错误错误
- 测试完美哈希函数时超出范围错误
- 在哈希表复制构造函数中找不到错误
- 编译哈希算法时出现内存访问冲突错误
- 错误 c2338 C++ 标准不提供此类型的哈希
- 哈希映射错误:与调用 '(const __gnu_cxx::.
- 哈希函数错误,c++
- 将链接哈希表初始化为 NULL。获取"lvalue required as left operand of assignment"错误。为什么?这是我的代码:
- 哈希表中存在分段错误
- 当用户自定义哈希函数在 unordered_map 中时,无法解码 g++ 中模糊的编译器错误
- 逐行散列文件时错误的 md5 哈希值
- 返回错误值的双哈希函数
- 为什么我在为矢量实现这个简单的哈希时出现错误<int>?
- 实现哈希表(rehash范围错误)
- 使用Crypto++进行MD4哈希会导致错误的哈希