Я пытаюсь хэшировать файл в моей системе, и хэш в моем коде 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
- это то, что я использую для проверки хеша, но выходы разные. Я бы скопировал пасту, но она в другой системе.