Estoy tratando de crear una contraseña hash para Laravel. Ahora alguien me dijo que usara el ayudante de hash de Laravel, pero parece que no puedo encontrarlo o estoy mirando en la dirección incorrecta.
¿Cómo creo una contraseña hash laravel? ¿Y donde?
Editar: sé cuál es el código, pero no sé dónde ni cómo usarlo, por lo que me devuelve la contraseña hash. Si obtengo la contraseña hash, puedo insertarla manualmente en la base de datos
php artisan tinker
. Por ejemplo,echo Hash::make('yourpassword')
Respuestas:
Hashing de una contraseña usando Bcrypt en
Laravel
:$password = Hash::make('yourpassword');
Esto creará una contraseña hash. Puede usarlo en su controlador o incluso en un modelo, por ejemplo, si un usuario envía una contraseña usando un formulario a su controlador usando el
POST
método, entonces puede usar un hash usando algo como esto:$password = Input::get('passwordformfield'); // password is form field $hashed = Hash::make($password);
Aquí,
$hashed
contendrá la contraseña hash. Básicamente, lo vas a hacer al crear / registrar un nuevo usuario, por lo que, por ejemplo, si un usuario envía los detalles tales como,name
,email
,username
ypassword
etc mediante un formulario, a continuación, antes de insertar los datos en la base de datos, se le hash de la contraseña después de validar los datos. Para obtener más información, lea la documentación .Actualizar:
$password = 'JohnDoe'; $hashedPassword = Hash::make($password); echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
Entonces, insertará el
$hashedPassword
en la base de datos. Espero, ahora está claro y si aún estás confundido, te sugiero que leas algunos tutoriales, que veas algunas proyecciones de pantalla en laracasts.com y tutsplus.com y también leas un libro sobreLaravel
, este es un libro electrónico gratuito , puedes descargarlo.Actualización: dado que
OP
quiere cifrar manualmente la contraseña usando LaravelHash
sin ninguna clase o formulario, esta es una forma alternativa de usarartisan tinker
desde el símbolo del sistema:Laravel
instalación (el directorio raíz de tu proyecto)cd <directory name>
y presione enter desde el símbolo del sistema / terminalphp artisan tinker
y presiona enterecho Hash::make('somestring');
Actualización (Laravel 5.x):
// Also one can use bcrypt $password = bcrypt('JohnDoe');
fuente
db
, debe cifrarla, por lo que, a partir de una contraseña simple, la cifrará usandoHash::make('passwordstring');
y luego guardará esta contraseña hash en la base de datos.Laravel 5 utiliza
bcrypt
. Entonces, también puedes hacer esto.$hashedpassword = bcrypt('plaintextpassword');
salida de la cual puede guardar en el campo de contraseña de la tabla de la base de datos.
Fn Ref: bcrypt
fuente
check
método:if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
Ref: laravel.com/docs/5.1/hashing Editar: No olvide votar la respuesta si le ha ayudado;)La fachada de Laravel Hash proporciona hash Bcrypt seguro para almacenar contraseñas de usuario.
El uso básico requería dos cosas:
Primero incluya la fachada en su archivo
use Illuminate\Support\Facades\Hash;
y use el
Make
método para generar la contraseña.y cuando desee hacer coincidir la cadena hash, puede usar el siguiente código:
Puede obtener más información con el enlace del documento de Laravel a continuación para Hashing: https://laravel.com/docs/5.5/hashing
fuente
Para almacenar la contraseña en la base de datos, haga un hash de la contraseña y luego guarde.
$password = Input::get('password_from_user'); $hashed = Hash::make($password); // save $hashed value
Para verificar la contraseña, obtenga la contraseña almacenada de la cuenta de la base de datos
// $user is database object // $inputs is Input from user if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) { // Password is not matching } else { // Password is matching }
fuente
Si desea comprender cómo funciona exactamente laravel, puede revisar la clase completa en Github: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
Pero básicamente hay tres métodos PHP involucrados en eso:
$pasword = 'user-password'; // To create a valid password out of laravel Try out! $cost=10; // Default cost $password = password_hash($pasword, PASSWORD_BCRYPT, ['cost' => $cost]); // To validate the password you can use $hash = '$2y$10$NhRNj6QF.Bo6ePSRsClYD.4zHFyoQr/WOdcESjIuRsluN1DvzqSHm'; if (password_verify($pasword, $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; } //Finally if you have a $hash but you want to know the information about that hash. print_r( password_get_info( $password_hash ));
La contraseña hash es la misma que la contraseña bcrypt de laravel 5.x. No es necesario dar sal y costo, tomará sus valores predeterminados.
Esos métodos se han implementado en la clase laravel, pero si desea obtener más información, consulte la documentación oficial: http://php.net/manual/en/function.password-hash.php
fuente
Puede utilizar lo siguiente:
$hashed_password = Hash::make('Your Unhashed Password');
Puede encontrar más información: aquí
fuente
En BcryptHasher.php puedes encontrar el código hash:
public function make($value, array $options = array()) { $cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds; $hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost)); $hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost)); echo $value.' '.PASSWORD_BCRYPT.' '.$cost.' '; echo $hash;die(); if ($hash === false) { throw new RuntimeException("Bcrypt hashing not supported."); } return $hash; }
fuente
use Illuminate\Support\Facades\Hash; if(Hash::check($plain-text,$hashed-text)) { return true; } else { return false; }
por ejemplo, $ texto sin formato = 'texto'; $ texto-hash = Hash :: make ('texto');
fuente
Esta es la solucion:
use Illuminate\Support\Facades\Hash; $password = request('password'); // get the value of password field $hashed = Hash::make($password); // encrypt the password
NB: Utilice el código de la primera línea al principio de su controlador. Por último, pero no menos importante, use las dos líneas restantes de código dentro de la función de su controlador donde desea manipular los datos después de que se envíe el. Feliz codificación :)
fuente
Compare la contraseña en laravel y lumen:
Es posible que la función bcrypt no funcione con php7, entonces puede usar el siguiente código en laravel y lumen según sus requisitos:
use Illuminate\Support\Facades\Hash; $test = app('hash')->make("test"); if (Hash::check('test', $test)) { echo "matched"; } else { echo "no matched"; }
Espero que esta ayuda te haga feliz :)
fuente
ok, esto es un extracto de la función make en hash.php
$work = str_pad(8, 2, '0', STR_PAD_LEFT); // Bcrypt expects the salt to be 22 base64 encoded characters including // dots and slashes. We will get rid of the plus signs included in the // base64 data and replace them with dots. if (function_exists('openssl_random_pseudo_bytes')) { $salt = openssl_random_pseudo_bytes(16); } else { $salt = Str::random(40); } $salt = substr(strtr(base64_encode($salt), '+', '.'), 0 , 22); echo crypt('yourpassword', '$2a$'.$work.'$'.$salt);
Simplemente cópielo / péguelo en un archivo php y ejecútelo.
fuente