我已经为一段数据计算了 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/