У меня есть строка, преобразованная в хеш MD5 с использованием скрипта Python со следующей командой:
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