c++ - MD5 哈希函数输出垃圾

标签 c++ hex md5 output

我正在学习 C++ 类(class),我们正在学习 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++ 很困惑

最佳答案

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

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

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

关于c++ - MD5 哈希函数输出垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824785/

相关文章:

python - 从十六进制字符串中提取位

java - 为对象生成唯一的 MD5 哈希值

python - 将 RGB 颜色元组转换为十六进制字符串

excel - VBA Excel ascii转十六进制

php - PHP 中的 Md5 替代品?

ios - 在 iOS 9.1 中,从前景和背景中的 Assets 图像接收到的数据大小不同?

c++ - wxWidgets - 事件表与 Connect()?

C++ 套接字选项重用端口

c++ - 如何从 pqxx 调用重载的远程过程

c++ - 如何继承#include 类?