【发布时间】:2019-07-07 14:41:44
【问题描述】:
我使用 python 脚本使用以下命令将字符串转换为 MD5 哈希:
admininfo['password'] = hashlib.md5(admininfo['password'].encode("utf-8")).hexdigest()
这个值现在存储在一个在线数据库中。
现在我正在创建一个 C++ 脚本来登录这个数据库。在登录过程中,我要求输入密码,然后将其转换为 MD5 哈希值,以便与在线数据库中的值进行比较。
但是给出相同的字符串,我每次都会得到不同的 MD5 哈希值。
我该如何解决?
cin >> Admin_pwd;
cout << endl;
unsigned char digest[MD5_DIGEST_LENGTH];
const char* string = Admin_pwd.c_str();
MD5((unsigned char*)&string, strlen(string), (unsigned char*)&digest);
char mdString[33];
for(int i = 0; i < 16; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
printf("md5 digest: %s\n", mdString);
第一次尝试:
md5 digest: dcbb3e6add7fb94b98c56d7f70b7c46e
第二次尝试:
md5 digest: 2870f4de491ad17d53d6d6e9dae19ca9
第三次尝试:
md5 digest: 84656428baf461093e9fca2c8b05a296
【问题讨论】:
-
请不要在 C++ 中使用 C 风格的强制转换。