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 に答える