C SHA1 哈希不起作用

标签 c sha1

尝试获取一个字符数组(C 的新手)并将其编码为 SHA1。

以下代码无效。作为返回 '\x10'

char encode[1000];
strcpy(encode, "GET\n\n\n");
strcat(encode, tim);
strcat(encode, "\n");
strcat(encode, uri);

size_t length = sizeof(encode);
unsigned char hash[SHA_DIGEST_LENGTH];
SHA1(encode, length, hash);

return hash;

归根结底,我想要哈希的 base64 表示。谢谢!!!

最佳答案

很可能,您的问题是您返回本地声明的内存,其生命周期等于您的函数范围。在该范围之外它将不存在。您可能应该允许用户传入他自己的缓冲区来保存哈希:

/* Requires a buffer with a size of at least SHA_DIGEST_LENGTH bytes. */
void do_hash(unsigned char* buffer) {
    /* your code */
    SHA1(encode, length, buffer);
}

使用示例:

unsigned char* hash = malloc(sizeof(unsigned char) * SHA_DIGEST_LENGTH);
do_hash(hash);

/* do whatever you want */

free(hash);

关于C SHA1 哈希不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549036/

相关文章:

c# - 在 C# 中使用 SHA1 算法进行散列

c - Windows 加密 API

algorithm - 当发行人使用 SHA-1 时,是否可以生成 subca 或使用 SHA-2 签署任何 csr

c - 即使在编译后也会出现段错误?

c - C 中的 For 循环示例

c - 网上有没有 C 术语的汇编?

algorithm - System.Security.Cryptography.BCryptHashAlgorithm。此平台不支持指定的加密算法

c - 在c中生成url并发布数据

c - 分配内部有数组的结构体数组

android - 谷歌地图报告 Android 中的无效 key