gpt4 book ai didi

c++ - 如何使用 openssl/sha.h 对文本文件进行 SHA256 哈希处理

转载 作者:行者123 更新时间:2023-11-28 04:26:10 27 4
gpt4 key购买 nike

我试图对我系统上的一个文件进行哈希处理,我的 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 文件.txt | sha256sum 是我用来检查哈希的,但输出不同。我会复制粘贴,但它在另一个系统上。

最佳答案

很简单,您在打印循环中使用了 [1] 而不是 [i]

      for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
printf("%02x", output[1]);

应该是

      for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
printf("%02x", output[i]);

愚蠢的拉丁字母表!

关于c++ - 如何使用 openssl/sha.h 对文本文件进行 SHA256 哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com