Попробуйте найти StackOverflow, прежде чем задавать вопрос. На многие вопросы уже ответил. Например:
- PHP и MySQL сравнивают пароль
- как создать mySQL-пользователя с хешем ('sha256', $ salt. $ password)?
- Безопасный хэш и соль для паролей PHP
- Вход пользователя с одним запросом и солью пользователя для каждого пользователя
- Неслучайная соль для хэшей паролей
Здравствуй
Я хочу, чтобы никто не мог видеть мой пароль даже в базе данных.
Поэтому я использовал хеш-функцию, подобную этой
$passowrd_hash=hash('shal',$_POST['password']);
Теперь я легко могу сохранить это значение password_hash в базе данных. Это будет нечто вроде зашифрованной формы.
Теперь пользователь знает свой первоначальный пароль, он не знает этот зашифрованный пароль.
Теперь, если он попытается войти в систему через этот оригинальный пароль. Он не может войти в систему.
Итак, есть ли какой-либо метод, чтобы он мог быть расшифрован, и пользователь может войти в систему. Таким образом, он может получить как пароль безопасности, так и логин снова.
Как это сделать?
вам нужно хэш ввести пароль пользователя и сравнить хэши.
Прежде чем сравнивать зарегистрированный пароль пользователя с тем, который находится в базе данных, зашифруйте опубликованный пароль так же, как и сохраненный пароль.
Все, что вам нужно сделать, это зашифровать введенный вами пароль и сравнить их; хэш в базе данных и тот, который вы только что зашифровали. Если они совпадают, введенный пароль является правильным. Я предполагаю, что вы используете такой алгоритм, как SHA1.
Как уже было сказано, вам нужно хэшировать пароль каждый раз, когда они повторно вводят его и сравнивают хэш с тем, что находится в вашей базе данных.
Вы также должны изучить использование соли в своем алгоритме хэширования. В этом вопросе много обсуждается:
Безопасный хэш и соль для паролей PHP
Вам не нужно расшифровывать его. Вы не можете преобразовать хэш в простой текст, его одностороннюю функцию. Итак, в основном вы вводите пароль ввода и сравниваете два хэша:
Eg (pseudo code):- if hash(password entered by user) == password stored in databse Then //logged in successfully else //login failed end if
Я настоятельно рекомендую использовать md5 () http://php.net/manual/en/function.md5.php .
Когда пользователь подписывается, вы сохраняете:
$password = md5($_POST['password']);
И когда пользователь входит в систему, вы проверяете:
if($_POST['password_entered'] == $passwordFromDB) : // Log user in else : // Show error to user endif;