mysql — MD5 действует по-разному в базе данных SQL и в скрипте PHP

Недавно я создал скрипт, который обрабатывает логин и регистрацию для моей игры, который использует метод http_get для обновления статистики. Мне удалось все успешно создать, но есть проблема. Когда пользователь регистрируется, он вставляет другую строку md5, сгенерированную PHP-скриптами, и из-за этого я не могу сравнивать пароли.

Вот как я вставляю строку md5 в базу данных:

$pw = md5($password);
$insert = mysqli_query($connect, "INSERT INTO Accounts (username, password, email,reg_ip, wins, looses, experience) VALUES ('$username', '$pw', '$email',  '$reg_ip', '0','0', '0')");
if($insert) {
echo "account successfully created";

}
else {
echo "error";
}

И вот как я проверяю пароли:

if($p['password'] == md5($password)) {
echo "login was successful!";
}
else {
echo "incorrect password";
}

Это строка md5, которая находится в базе данных, когда пользователь регистрируется: (незашифрованная строка: pocakaj123)

54e8850ba5eca655854ddf1b503943

и это сгенерированная строка, когда я echo md5($password),

54e8850ba5eca655854ddf1b50394348

0

Решение

Это связано с длиной вашего поля в вашей базе данных. Вам нужно увеличить длину, чтобы вся строка могла уместиться.

В настоящее время он принимает только 30 символов, поэтому оставшиеся усекаются:

54e8850ba5eca655854ddf1b503943

Вам нужно увеличить длину как минимум до 32, чтобы уместить всю строку:

54e8850ba5eca655854ddf1b50394348

Замечания:

md5() не является безопасным способом хеширования паролей, лучше bcrypt() или вместо этого использовать функции хэширования паролей PHP, password_hash(),

Причина, по которой md5() не является безопасным:

Алгоритмы хеширования, такие как MD5, SHA1 и SHA256, разработаны, чтобы быть очень быстрыми и эффективными. С современными методами и компьютерным оборудованием стало просто «грубой силой» выводить эти алгоритмы, чтобы определить исходный ввод.

Ссылка от http://php.net/manual/en/faq.passwords.php.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]