c - 如何使用 C 将 SHA1 输出存储到文件

标签 c hash sha1

我已经为一段数据计算了 SHA1,我需要将它存储到一个文件中以供其他人稍后读取。 SHA1 将输出作为 190 位的,但我无法将其作为位存储到文件中,fputc() 函数执行它的字符表示字节。

所以我想将其作为字节存储到文件中或作为其十六进制 表示形式(最好)。在 C 中,到目前为止我只能让它以十六进制表示形式将哈希打印到终端(使用我在本网站发布的另一个问题中找到的方法),但我无法弄清楚如何将其正确存储到文件中。

请帮忙!

最佳答案

如果你想在文件中将 SHA1 摘要写成二进制摘要,你可以使用:

fwrite ( &sha1_digest, sizeof(sha1_digest), 1, stream );

其中 stream 是以二进制模式打开的 FILE*。

如果你想把它保存为十六进制字符串,你可以做一个循环:

char *p=(void*)&sha1_digest; 
int i=sizeof(sha1_digest); 
while (i--) 
    fprintf (stream, "%02x",*p++); 

其中 tream 是以文本或二进制模式打开的 FILE*

我假设 sha1_digest 是一个结构。如果它是一个数组,则不需要 & 并且如果数组不是固定大小,则必须提供摘要的大小(因为在这种情况下, sizeof() 将返回指针的大小而不是数组的大小。)

你当然知道,但是SHA1 is no longer considered as a safe hash ,如果您的使用与安全性有些相关。

关于c - 如何使用 C 将 SHA1 输出存储到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494738/

相关文章:

c - 在 c 中按 enter 后退出循环

javascript - 在检查每个键、值对 Javascript 的同时遍历 Hashtable

html - 如何在 Perl 中创建一个带有超链接的简单 HTML 表?

php - PHP伪随机有多随机,4个字节

.net - .net 如何创建 SHA1 哈希?

php - 如何在php中解密sha1?

ruby-on-rails - Rails 中的 SHA1 哈希

c - 如何以独立于平台的方式 fork 、等待和终止进程?

c - 用于验证 C 程序中所有结构的最佳打包的工具

python - 如何将 C 库包装在 SWIG 中,它通常在 C 编译期间链接?