我在打印使用OpenSSL,代码(使用OpenSSL)生成的哈希时遇到了问题:
char *computeHash(char *msg){
static char hs[20];
SHA1(msg, strlen(msg), hs);
return hs;
}
int main(){
char *text;
char *hash;
int i;
text = "test";
hash = computeHash(text);
for(i=0;i<20;i++){
printf("%02x",hash[i]);
}
return 0;
}
回来后我得到了:
$ ./a.out ffffffa94affffff8fffffffe5ffffffccffffffb1ffffff9bffffffa61c4c0873ffffffd3ffffff91ffffffe9ffffff87ffffff982fffffffbbffffffd3
这是打印它的任何方式吗?
谢谢,
答案 0 :(得分:3)
%02x
格式字符串用于整数。但是你正在打印一个角色。此外,hash
是char *
指针,您可能需要unsigned char *
。怎么样:
unsigned char *hash_ptr = (unsigned char *) hash;
for(i=0;i<20;i++){
printf("%02x", (int) hash_ptr[i]);
}