【发布时间】:2013-01-12 07:33:54
【问题描述】:
我一直在努力让 sha1() 函数从 openssl/sha.h 工作,但是我得到了随机输出和一些警告。我已经阅读了相当多的内容并尝试了一些示例代码,但我都收到了警告,并且无法正确显示。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <openssl/sha.h>
int main()
{
const unsigned char data[] = "Hello, World";
unsigned long length = sizeof(data);
unsigned char hash[SHA_DIGEST_LENGTH];
SHA1(data, length, hash);
printf("%02x \n", hash);
return 0;
}
以下是我收到的警告:
sha.c: In function ‘main’:
sha.c:12: warning: ‘SHA1’ is deprecated (declared at /usr/include/openssl/sha.h:124)
sha.c:13: warning: format ‘%02x’ expects type ‘unsigned int’, but argument 2 has type ‘unsigned char *’
sha.c:13: warning: format ‘%02x’ expects type ‘unsigned int’, but argument 2 has type ‘unsigned char *’
当我运行它并得到输出时: 62652b34
任何帮助都会很棒!
【问题讨论】:
-
如果将结果与一些测试台数据进行比较,请确保长度正确。在大多数情况下,“Hello, World”的长度应该是 12,但在这里我认为它是 13,因为 sizeof() 也计算 ascii 零字符。