gpt4 book ai didi

c - 如何在 c 中生成返回原始输出的 SHA1?

转载 作者:行者123 更新时间:2023-11-30 19:06:48 24 4
gpt4 key购买 nike

请引用http://php.net/manual/en/function.sha1.php

如果可选的 raw_output 设置为 TRUE,则 sha1 摘要将以原始二进制格式返回,长度为 20,否则返回值是 40 个字符的十六进制数。

我当前的代码是

char *concat = "somestring";
int i = 0;
unsigned char hash[SHA_DIGEST_LENGTH];
char buf[SHA_DIGEST_LENGTH*2];

memset(buf, 0x0, SHA_DIGEST_LENGTH*2);
memset(hash, 0x0, SHA_DIGEST_LENGTH);

SHA1((unsigned char *)concat, strlen(concat), hash);

for (i=0; i < SHA_DIGEST_LENGTH; i++) {
sprintf((char*)&(buf[i*2]), "%02x", hash[i]);
}

printf("<<sha1=%s>>\n", buf);

它工作正常,但返回十六进制字符串。

实现这一目标的最佳方法是什么?

谢谢。

最佳答案

解决方案非常简单明了。我只需更改格式:

来自

sprintf((char*)&(buf[i*2]), "%02x", hash[i]);

sprintf((char*)&(buf[i*2]), "%c", hash[i]);

谢谢大家给我指出正确的位置!

关于c - 如何在 c 中生成返回原始输出的 SHA1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605867/

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