2017-08-21 12 views
3

私たちのアプリケーションの1つをSymfony 3.3からLaravel 5.5に移行しています。Symfony fos_userは、Laravel-SymfonyからLaravelへのパスワードをエンコードしました。

Symfonyアプリケーションでは、パスワードを符号化するためにFOSUserBundleを使用しました。

providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username_email 
encoders: 
    FOS\UserBundle\Model\UserInterface: sha512 

Laravelで同じアルゴリズムをどのように使用できるかを把握しようとしています。試してみました

password_verify

password_verify($raw, $encoded) 

が、動作しません。どんな考えであれ非常に役に立ちます。

+0

から撮影することができます。解決策を見つけたら私をPMしてください。 – Hotgeart

答えて

1

はこれを試してみてください:

$raw = 'qwerty12345'; 
$salt = 'salt'; // $user->getSalt() users salt field 

if (empty($salt)) { 
    $salted = $raw; 
} else { 
    $salted = $raw.'{'.$salt.'}'; 
} 

$digest = hash('sha512', $salted, true); 

for ($i = 1; $i < 5000; ++$i) { 
    $digest = hash('sha512', $digest.$salted, true); 
} 

$encoded = base64_encode($digest); 

echo hash_equals($encoded, %password_from_db%); 

パスワードを何度もハッシュ化され、反復がSecurityBundleに設定されてカウントされます。すべてのパラメータはencodersセクションにコマンド./bin/console debug:config SecurityBundleことで利用できます。この場合の

FOS\UserBundle\Model\UserInterface: 
     algorithm: sha512 
     hash_algorithm: sha512 
     key_length: 40 
     ignore_case: false 
     encode_as_base64: true 
     iterations: 5000 
     cost: 13 

パスワードエンコードのコードは、私は同じ問題をしたhttps://github.com/symfony/symfony/blob/master/src/Symfony/Component/Security/Core/Encoder/MessageDigestPasswordEncoder.php

+0

ループの動作を説明できますか? – Meathanjay

+0

はい、回答を更新しました。 –

関連する問題