尝试获取一个字符数组(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/