在C上打印错误类型的哈希值

时间:2013-11-07 01:12:53

标签: c hash cryptography openssl sha1

我在打印使用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

这是打印它的任何方式吗?

谢谢,

1 个答案:

答案 0 :(得分:3)

%02x格式字符串用于整数。但是你正在打印一个角色。此外,hashchar *指针,您可能需要unsigned char *。怎么样:

unsigned char *hash_ptr = (unsigned char *) hash;
for(i=0;i<20;i++){
    printf("%02x", (int) hash_ptr[i]);
}