Comment créer un mot de passe haché laravel

J'essaie de créer un mot de passe haché pour Laravel. Maintenant, quelqu'un m'a dit d'utiliser Laravel hash helper mais je n'arrive pas à le trouver ou je regarde dans la mauvaise direction.

Comment créer un mot de passe haché laravel? Et où?

Modifier: Je sais ce qu'est le code mais je ne sais pas où et comment l'utiliser donc il me rend le mot de passe haché. Si j'obtiens le mot de passe haché, je peux l'insérer manuellement dans la base de données

53
demandé sur Philip Kirkbride 2014-04-03 23:16:11

8 réponses

Hachage D'un mot de passe en utilisant Bcrypt dans Laravel:

$password = Hash::make('yourpassword');

Cela va créer un mot de passe haché. Vous pouvez l'utiliser dans votre contrôleur ou même dans un modèle, par exemple, si un utilisateur soumet un mot de passe à l'aide d'un formulaire à votre contrôleur en utilisant la méthode POST, vous pouvez le hacher en utilisant quelque chose comme ceci:

$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);

Ici $hashed contiendra le mot de passe haché. Fondamentalement, vous le ferez lors de la création/enregistrement d'un nouvel utilisateur, par exemple, si un utilisateur soumet des détails tels que, name, email, username et {[10] } etc en utilisant un formulaire, puis avant d'insérer les données dans la base de données, vous hacherez le mot de passe après avoir validé les données. Pour plus d'informations, lire la documentation.

Mise à Jour:

$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy

Donc, vous allez insérer le $hashedPassword dans la base de données. L'espoir, c'est clair maintenant, et si vous êtes encore confus alors je vous suggère de lire quelques tutoriels, regarder l'écran jette sur laracasts.com et tutsplus.com et aussi de lire un livre sur Laravel, c'est un ebook gratuit, vous pouvez le télécharger.

Update: puisque OP veut chiffrer manuellement le mot de passe en utilisant Laravel Hash sans aucune classe ou formulaire, c'est une autre façon d'utiliser {[15] } à partir de l'invite de commande:

  1. accédez à votre invite de commande / terminal
  2. accédez à l'installation Laravel (répertoire racine de votre projet)
  3. utilisez cd <directory name> et appuyez sur Entrée depuis l'invite de commande / terminal
  4. ensuite, écrivez php artisan tinker et appuyez sur entrez
  5. alors écrivez echo Hash::make('somestring');
  6. Vous obtiendrez un mot de passe haché sur la console, Copiez-le et faites ce que vous voulez faire.

Mise À Jour (Laravel 5.x):

// Also one can use bcrypt
$password = bcrypt('JohnDoe');

107
répondu The Alpha 2017-01-12 06:19:53

Laravel 5 utilise bcrypt. Ainsi, vous pouvez le faire aussi bien.

$hashedpassword = bcrypt('plaintextpassword');

Sortie que vous pouvez enregistrer dans le champ Mot de passe de votre table de base de données.

Fn Ref: bcrypt

12
répondu Rao 2015-08-10 12:47:43

Pour stocker le mot de passe dans la base de données, faites le hachage du mot de passe, puis enregistrez.

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value

Pour vérifier le mot de passe, obtenez le mot de passe stocké du compte à partir de la base de données

// $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 
}
4
répondu Somnath Muluk 2015-11-16 16:27:06

La façade de hachage Laravel fournit un hachage bcrypt sécurisé pour stocker les mots de passe des utilisateurs.

L'utilisation de base nécessitait deux choses:

Incluez D'abord la façade dans votre fichier

use Illuminate\Support\Facades\Hash;

Et utilisez la méthode Make pour générer un mot de passe.

$hashedPassword = Hash::make($request->newPassword);

Et quand vous voulez faire correspondre la chaîne hachée, vous pouvez utiliser le code ci-dessous:

Hash::check($request->newPasswordAtLogin, $hashedPassword)

Vous pouvez en savoir plus avec le lien du document Laravel ci-dessous pour le hachage: https://laravel.com/docs/5.5/hashing

3
répondu Prashant Barve 2017-12-26 08:01:01

Vous pouvez utiliser ce qui suit:

$hashed_password = Hash::make('Your Unhashed Password');

, Vous pouvez trouver plus d'informations: ici

2
répondu Chris G 2014-04-03 19:21:47

Dans le BcryptHasher.php, vous pouvez trouver le code de hachage:

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;
}
1
répondu hendra1 2015-09-08 06:08:39

Si vous voulez comprendre comment fonctionne excatly laravel, vous pouvez consulter la classe complète sur Github: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

Mais fondamentalement, il y a trois méthodes PHP impliquées à ce sujet:

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

Le mot de passe haché est le même que laravel 5.x mot de passe bcrypt. Pas besoin de donner du sel et du coût, il prendra ses valeurs par défaut.

Ces méthodes ont été implémentées dans la classe laravel, mais si vous voulez en savoir plus veuillez consulter la documentation officielle: http://php.net/manual/en/function.password-hash.php

1
répondu Jathin Prasad 2018-04-22 10:39:31

Ok, c'est un extrait de la fonction make dans 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);

Il suffit de copier / coller dans un fichier php et l'exécuter.

-5
répondu Fabián Valencia 2015-02-07 06:41:06