c++ - Keccak 输出错误

标签 c++ sha-3 keccak

我正在尝试使用 this 运行 Keccak 224官方图书馆。 不幸的是,我从函数中得到了错误的哈希值。 我怀疑这是图书馆的错,而是我做错了什么。

这就是我正在尝试的:

unsigned char input[] = "abc", output[168];
const unsigned long long int inputByteLen = sizeof(input);

FIPS202_SHA3_224(input, inputByteLen, output);

std::stringstream stream;
for (unsigned int i = 0; i < sizeof(output); i++) {
    stream << std::hex << static_cast<short>(output[i]);
}
cout << stream.str() << endl;

使用 SHA-3-224 (Keccak) 的“abc”的正确散列应该是:

e642824c3f8cf24a d09234ee7d3c766f c9a3a5168d0c94ad 73b46fdf

但我只能从这种调用库的方式中得到废话。 我究竟做错了什么? 一个小例子会很好,它可以解释我如何才能达到预期的结果以及我做错了什么。

最佳答案

你有没有考虑到末尾的空字符?

const unsigned long long int inputByteLen = sizeof(input) - 1;

关于c++ - Keccak 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253565/

相关文章:

scala - SHA3​​ 状态和 PBKDF2-HMAC-SHA3 测试向量

ecdsa - 使用谷歌云 key 管理服务签署以太坊交易

c - 我的 C 程序在 Keccak 实现中打印 0xE 而不是 0x0E

c++ - 如何将模板限制为特定类型?

c++ - 错误无效转换 C++

c++ - 如何处理模板类中的指针?

c++ - RoundRect 的圆角边缘不平滑

python - 如何从python中的keccak 256哈希值中找到原始值?