MD5哈希函数输出垃圾

时间:2013-02-12 03:13:18

标签: c++ hex md5 output

我正在开发一个C ++类,我们正在学习MD5散列函数。我遇到了这个问题,我做了类似的事情:

string input = "testInput";
unsigned char *toHash = new unsigned char[input.size()+1];
strcpy( (char*)toHash, input.c_str() );

unsigned char output[MD5_DIGEST_LENGTH];

MD5(toHash, input.size(), output);

cout << hex << output << endl;

但是我总是得到一些奇怪的垃圾字符而不是我正在寻找的东西,比如长串的数字/字母。发生了什么事?

〜 非常困惑的低级C ++

1 个答案:

答案 0 :(得分:0)

不要被数组的“unsigned char”类型所欺骗,这意味着数组中的每个值都将是一个8位无符号整数。特别是它意味着写入数组的数据将是人类可读的ASCII字符。

如果你想以人类可读的十六进制形式看到数组的内容,你可以这样做(而不是cout命令):

for (int i=0; i< MD5_DIGEST_LENGTH; i++) printf("%02x ", output[i]);
printf("\n");