繁体   English   中英

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

[英]Printing wrong type for hash value on C

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

有什么办法打印正确吗?

谢谢,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM