C 使用带有未签名字符的SHA512 OpenSSL获取警告
我正在玩C中的openssl,得到一些我喜欢消除的警告,我不确定如何处理它,因为我发现的示例似乎与我正在模拟的一样C 使用带有未签名字符的SHA512 OpenSSL获取警告,c,openssl,C,Openssl,我正在玩C中的openssl,得到一些我喜欢消除的警告,我不确定如何处理它,因为我发现的示例似乎与我正在模拟的一样 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/sha.h> int main(int argc, char** argv) { int i; unsigned char resSHA512[SHA512_DIG
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/sha.h>
int main(int argc, char** argv)
{
int i;
unsigned char resSHA512[SHA512_DIGEST_LENGTH];
unsigned char unhashed[1024];
printf("Input string to hash: ");
fgets(unhashed, sizeof(unhashed), stdin);
unhashed[strcspn(unhashed, "\n")] = 0;
SHA512(unhashed, strlen(unhashed), resSHA512);
printf("\nSHA512: ");
for ( i = 0; i < SHA512_DIGEST_LENGTH; i++ )
{
printf("%02x", resSHA512[i]);
}
printf("\n");
return 0;
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv)
{
int i;
无符号字符resSHA512[SHA512_摘要_长度];
未签名字符未删除[1024];
printf(“哈希的输入字符串:”);
fgets(未加工、尺寸(未加工)、标准尺寸);
unhashed[strcspn(unhashed,“\n”)]=0;
SHA512(未清除)、strlen(未清除)、resSHA512;
printf(“\nSHA512:”);
对于(i=0;i
我还收到一个警报,当我在Mac上使用openssl编译时,open已经不推荐使用SHA512
,我是通过它的git存储库获得的。在Linux中,我不会收到任何警告,除非我将-Wall
标志与gcc
一起使用
非常感谢您的帮助,因为我正在努力学习新知识
谢谢你你在
中读到的unhashed
是一个字符串,所以你应该将它声明为字符的数组。这将使用与字符串相关的函数处理警告
调用SHA512
时会出现一个警告,它的第一个参数应该是无符号字符。在这种情况下,您可以安全地将参数强制转换为无符号字符*
您在Mac上看到的警告是因为整个OpenSSL库在该操作系统上被标记为已弃用,取而代之的是它自己的加密库。您在中读取的未清除的是一个字符串,因此您应该将其声明为字符的数组。这将使用与字符串相关的函数处理警告
调用SHA512
时会出现一个警告,它的第一个参数应该是无符号字符。在这种情况下,您可以安全地将参数强制转换为无符号字符*
您在Mac上看到的警告是因为整个OpenSSL库在该操作系统上被标记为不推荐使用,而支持它自己的加密库