Я хочу изменить свои регистрационные/логин-страницы с md5 на bcrypt. Регистрирующая часть - все в порядке, но я не могу заставить часть входа работать хорошо. Я пытаюсь работать с библиотекой bcrypt; https://github.com/ircmaxell/password_compat/blob/master/lib/password.php.Как с помощью bcrypt
Оригинальная функция входа (без md5) выглядит следующим образом;
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize($username);
return (mysql_result
(mysql_query
("SELECT COUNT(`user_id`)
FROM `users`
WHERE `username` = '$username'
AND `password` = '$password'"), 0) == 1) ? $user_id : false;
}
То, что я пытаюсь сделать, это получить базу данных, но с оригиналом код не представляется возможным из-за mysql_result части. Я подумал, например, что;
function login($username, $password) {
$username = sanitize($username);
$user_query = mysql_query("SELECT `password` FROM `users` WHERE `username` = '$username'");
$row = mysql_fetch_assoc($user_query);
$hash = $row['password'];
password_verify($password, $hash);
}
будет решать эту проблему, но это не так.
Есть ли решение без mysql_fetch_assoc() здесь или я пытаюсь удалить базу данных неправильно?
Не используйте 'mysql_ *' функции, они устарели. Вместо этого используйте 'mysqli_ *' или 'PDO'. –
Почему bcrypt вместо более современной хэш-функции вроде sha2-512? – dtech
Если бы я мог -1 dtech, я бы ... Посмотрите на это: http://passwords12.at.ifi.uio.no/Jeremi_Gosney_Password_Cracking_HPC_Passwords12.pdf –