sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar el método password_hash() de php?

Se supone que debes verificar la contraseña sin procesar, como password_verify() realiza el re-hashing de la contraseña sin formato usando la rutina hash utilizada al crear la contraseña hash.

Si observa el resultado de password_hash() hay información almacenada en el hash sobre qué rutina de hash se usó para crear este hash y cómo se generó

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

if (password_verify($password, $hash)) { 
   return true;
} else {
    return false;
}

Otro error común en esta área es no darle a la columna que usa en la tabla de la base de datos suficientes caracteres para contener el resultado completo del hash

El hash generado usando PASSWORD_BCRYPT es de 60 caracteres

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Tenga cuidado, cuando se proporcionan otros valores hash en el futuro, pueden dar como resultado un valor hash de más de 60 caracteres

Entonces, en resumen, su código debería ser

$this->db->select('password');
$this->db->from('usersdetails');
$this->db->where('email', $email);
$this->db->limit(1);
$query = $this->db->get();
$pwd_from_db = $query->row()->password;

if (password_verify($this->input->post('password'), $pwd_from_db)) {
   return true;
} else {
    return false;
}