【发布时间】:2019-01-19 04:30:29
【问题描述】:
我正在尝试在我的系统上散列一个文件,而我的 C++ 代码中的散列是正确的长度,但它与我在$ echo -n file.txt | sha256sum 时得到的散列不同
我已经尝试实现我目前在 stackoverflow 上看到的混合内容,最终得到了一些几乎可以工作的东西。
void sha256_file(const std::string &fn)
{
FILE *file;
unsigned char buf[8192];
unsigned char output[SHA256_DIGEST_LENGTH];
size_t len;
SHA256_CTX sha256;
file = fopen(fn.c_str(), "rb");
if(file == NULL)
// do whatever
else
{
SHA256_Init(&sha256);
while((len = fread(buf, 1, sizeof buf, file)) != 0)
SHA256_Update(&sha256, buf, len);
fclose(file);
SHA256_Final(output, &sha256);
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
printf("%02x", output[1]);
printf("\n");
}
请原谅,我正在尝试通过少量文档来学习如何使用它,而大多数人只是在尝试散列短字符串。
$ echo -n file.txt | sha256sum 是我用来检查哈希的,但输出不同。我会复制粘贴,但它在另一个系统上。
【问题讨论】:
-
echo -n file.txt | sha256sum实际上是将文本"file.txt"传递给sha256sum而不是file.txt的内容。如果那是您想要的,那很好,但如果您尝试实际对内容进行哈希处理,那么您并没有完全做到这一点。