2017-02-27 1 views
0

J'ai une table existante avec hash hash utilisant hash_pbkdf2. Pour l'enregistrement de l'utilisateur, le succès insérer dans mysqllaravel php authentification de connexion pbkdf2

$string = mcrypt_create_iv(24, MCRYPT_DEV_URANDOM); 
$salt = strtoupper(bin2hex($string)); 
$hash = hash_pbkdf2("sha1", $data['password'], $string, 1000, 24, true); 
$hash = strtoupper(bin2hex($hash)); 

return User::create([ 
    'name' => $data['name'], 
    'email' => $data['email'], 
    'hashedpassword' => $hash, 
    'salt' => $salt, 
]); 

J'ai de la difficulté à me connecter en l'utilisant. voici mon code

$found_salt = DB::table('users')->where('email', '[email protected]')->first(); 
$salt = $found_salt->salt; 

echo "Salt : ".$salt."<br>"; 
$hash = hash_pbkdf2("sha1", "password", $salt, 1000, 24, true); 
$hash = strtoupper(bin2hex($hash)); 

$userlogin = [ 
    'email' => "[email protected]", 
    'hashedpassword' => $hash 
]; 
echo "Hash : ".$hash."<br>"; 

if(Auth::attempt($userlogin)) { 
    echo "success"; 
} else { 
    echo "not success"; 
} 

La valeur de sel est la même mais la valeur de hachage ne correspond pas. En espérant que quelqu'un puisse aider. Merci.

Répondre

0

Dans votre premier bloc de code, vous utilisez votre mot de passe avec la valeur $ string au lieu de $ salt, mais stockez $ salt dans la base de données.

Je pense donc que vous devez changer dans votre premier bloc de code:

$hash = hash_pbkdf2("sha1", $data['password'], $string, 1000, 24, true);
à
$hash = hash_pbkdf2("sha1", $data['password'], $salt, 1000, 24, true);