1
我正在研究C++类,并且我们正在学习MD5哈希函数。我遇到这个问题,但是,如果我这样做: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++很困惑
散列函数生成包含所述散列二进制串;您需要将其转换为十六进制或其他您想要使用的表示。 – 2013-02-12 03:19:38
好吧,但它生成的二进制字符串到无符号字符数组的权利?我不明白为什么这些位不会被解释为无符号字符的时候,这会让你通过cout输出它们...... – user1288167 2013-02-12 03:22:46
“垃圾”也被称为md5摘要。 :-) – asveikau 2013-02-12 03:24:56