2017-02-27 27 views
0

私はhash_pbkdf2を使用して、ハッシュパスワードを持つ既存のテーブルを持っています。ユーザー登録の場合は、mysqlに正常に挿入してください。laravel php 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, 
]); 

私はこのログインに問題があります。ここに私のコードです

$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"; 
} 

塩の値は同じですが、ハッシュ値が一致しません。誰かが助けてくれると願っています。ありがとう。

答えて

0

最初のコードブロックでは、パスワードを$ saltではなく$ stringの値でソルトしますが、$ saltはデータベースに格納します。

だから私はあなたの最初のコードブロックでこれを変更する必要があると思う:

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

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