Cómo descifrar la contraseña hash en Laravel

Tengo google esto mucho, pero desafortunadamente no encontré ninguna solución de trabajo.

Sé que es una mala técnica, pero necesito enviar al usuario su contraseña por correo electrónico.

Logré enviar la contraseña Hash del usuario, pero no puedo descifrar esta contraseña.

El siguiente es el procedimiento que estoy usando.

$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'); }); 

El código anterior envía una contraseña Encrypted al usuario por correo electrónico, pero cuando bash descifrarlo, aparece el siguiente mensaje de error.

 $decrypt= Crypt::decrypt($data->password); 

Datos inválidos.

 throw new DecryptException("Invalid data."); 

Amablemente guíame cómo lograr esto …

Solutions Collecting From Web of "Cómo descifrar la contraseña hash en Laravel"

La respuesta corta es que no ‘descifrar’ la contraseña (porque no está encriptada, es hash).

La respuesta larga es que no debe enviar al usuario su contraseña por correo electrónico ni de ninguna otra manera. Si el usuario ha olvidado su contraseña, debe enviarle un correo electrónico de restablecimiento de contraseña y permitirle cambiar su contraseña en su sitio web.

Laravel tiene la mayor parte de esta funcionalidad incorporada (consulte la documentación de Laravel : no voy a replicarla aquí. También está disponible para las versiones 4.2 y 5.0 de Laravel).

Para obtener más información, consulte esta publicación de ‘blogoverflow’: por qué las contraseñas deben ser hasheadas .

Para comparar la contraseña hash con la cadena de contraseña de texto plano, puede usar PHP password_verify

 if(password_verify('1234567', $crypt_password_string)) { // in case if "$crypt_password_string" actually hides "1234567" }