Keccak 输出错误
Keccak output wrong
我正在尝试 运行 Keccak 224 与 this 官方图书馆。
不幸的是,我从函数中得到了错误的哈希值。
我怀疑这是图书馆的错,而是我做错了。
这就是我正在尝试的:
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;
我正在尝试 运行 Keccak 224 与 this 官方图书馆。 不幸的是,我从函数中得到了错误的哈希值。 我怀疑这是图书馆的错,而是我做错了。
这就是我正在尝试的:
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;