Как расшифровать хэш-пароль в 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"
}