我的代码应该从字符串内容计算sha1哈希值,然后将其打印为十六进制值。
主要功能:
#include <openssl/sha.h>
int main(){
unsigned char str[] = "A";
unsigned char hash[SHA_DIGEST_LENGTH]; // == 20
SHA1(str, sizeof(str), hash);
printHash(hash);
return 0;
}
printHash功能:
void printHash(unsigned char *hash){
if(hash == NULL){
printf("HASH NULL\n");
return;
}
for (int i = 0; i < SHA_DIGEST_LENGTH; i++){
printf("%02X\n", hash[i]);
}
}
字符串的输出&#34; A&#34;是:
EF420ABFDDBDA7B9EE665D85EF62E4A437554003
但是当我尝试这样一个网站:http://www.sha1-online.com/时,我得到了这个结果:
6dcd4ce23d88e2ee9568ba546c007c63d9131c1b
为什么会有区别?
感谢您的帮助。
答案 0 :(得分:2)
我的愚蠢错误,我改变了这句话:
SHA1(str, sizeof(str), hash);
到
SHA1(str, sizeof(str)-1, hash);
现在一切正常,谢谢