Из моего понимания до сих пор (по крайней мере, я думаю) функция password_hash() генерирует хэш на основе используемого алгоритма, стоимости и соли. Хотя password_verify использует информацию, предоставленную, например, password_hash($pass, PASSWORD_BCRYPT, array('cost'=>10))
, чтобы проверить, является ли возвращаемое значение истинным или ложным, поскольку оно содержит всю информацию, необходимую для проверки.Сравнение паролей с сохраненным хешем
я ранее использовал
$SQL_Query = "SELECT * FROM DB_Table WHERE userName = '".$username."'" AND password = $ID;
, который будет работать, как они были сохранены в виде обычного текста и может вернуться в то время как верно логически это не будет работать в этот раз.
я наткнулся на подобные вопросы, когда они используют статические пароли в объяснениях, таких как
<?php
$to_verify = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $to_verify))
{
echo 'Password is valid!';
} else
{
echo 'Wrong password.';
}
Понятие У меня возникают проблемы понимания является, как можно было бы проверить ввод пароля от значения хэшированном, если она хранится в база данных, а не известная на этой странице странице? Недавно я получил помощь в сохранении значений, которые были глупой ошибкой с моей стороны, но я думаю, что это не щелчок со мной, как я и надеялся на данный момент.
Вы должны запросить хэш, выбрав пользователя. Когда у вас есть хэш, вы можете сравнить с опубликованным паролем, [тестирование для истины, как вы это сделали выше) (http://jayblanchard.net/proper_password_hashing_with_PHP.html). –
у вас есть синтаксическая ошибка 'userName = '". $ Username. "'" '<= Прямо там.* ", который будет работать" * Я в этом сомневаюсь. Вторичной двойной цитаты не должно быть. Скажите, что это опечатка. –
@ Dagon Возможный дубликат многих. Слишком много вопросов и ответов для заполнения этого вопроса. –