0

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

有什么方法可以打印它吗?

谢谢,

4

1 回答 1

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]);
}
于 2013-11-07T01:16:00.563 回答