Как расшифровать хэш-пароль в Laravel
у меня гугл это много, но unfortunatilty нашли не рабочее решение.
Я знаю, что это плохой метод, но мне нужно отправить пользователю свой пароль по электронной почте.
мне удалось отправить пароль хэша пользователя, но я не могу расшифровать этот пароль.
ниже приведена процедура, которую я использую.
$results = DB::select("select * from dockl_users where email='" . Input::get('email') ."';");
foreach($results as $data){
$password= $data->password;
$email= $data->email;
}
Mail::send('passwordRecovery', array('email' =>$password), function($message)
{
$message->to(Input::get('email') )->subject('Password Recovery');
});
вышеприведенный код отправить Encrypted
пароль пользователю по электронной почте, но когда я пытаюсь расшифровать, это дает мне следующую ошибку сообщение.
$decrypt= Crypt::decrypt($data->password);
неверные данные.
throw new DecryptException("Invalid data.");
пожалуйста, руководство мне, как этого добиться..
2 ответов
короткий ответ заключается в том, что вы не "расшифровываете" пароль (потому что он не зашифрован - он хэшируется).
длинный ответ заключается в том, что вы не должны отправить пользователю свой пароль по электронной почте, или любым другим способом. Если пользователь забыл свой пароль, вы должны отправить им сброс пароля электронная почта, и позволить им изменить свой пароль на вашем сайте.
Laravel имеет большую часть этой функции, встроенной (см. документация фреймворк Laravel - Я не собираюсь повторять все это здесь. Также доступно для версий 4.2 и 5.0 основе Laravel).
для дальнейшего чтения, проверьте это сообщение "blogoverflow":почему пароли должны быть хэшированы.
для сравнения хэшированного пароля с текстовой строкой пароля вы можете использовать PHP функцию password_verify
if(password_verify('1234567', $crypt_password_string)) {
// in case if "$crypt_password_string" actually hides "1234567"
}