2017-08-20 1 views
-3

でpassword_hashハッシュ:私はコストとパスワードを例えば20回をハッシュした場合デ・コスト

$Pass1=password_hash($Pass, PASSWORD_DEFAULT, ['cost' => 20]) 

そして、私があれば、私は私のウェブサイト上でユーザーログインをさせることができますどのように、私のデータベースに格納し私が知っているものからpassword_verify()、パスワードを「一度」ハッシュしますか?

password_verify ($password,$storedPassword)を20回実行する必要がありましたか? これは簡単な方法ですか?私はpassword_needs_rehashについて見ましたが、私はすでにそれを使用しようとしましたが、うまくいきませんでした。

+1

パスワードを複数回ハッシュしてもセキュリティは向上しません。テキストが以前に保存されたパスワードであるかどうかをチェックする通常の方法は、元のテキストと同じ変換プロセス(つまり、入力テキストを20回ハッシュして以前に保存したハッシュと比較する)に従うことです。 – karora

+0

コスト係数を20に設定してハッシュした場合、コスト係数は実際にハッシュ自体に格納されるため、password_verifyにはハッシュアルゴリズムとコスト係数の両方が表示され、それらを使用してパスワードを検証します。それはOPのようにそれを使用して、それは残りの世話をします。 – JimL

答えて

0

私は時間

$Pass1=password_hash($Pass, PASSWORD_DEFAULT, ['cost' => 20]); 
password_verify($PasswordInputByUser, $Pass1); 

だから、簡単なのビットの後に、解決策を見つけました!

0
<?php 

$Pass = 'greatPassword1'; 
$Pass1 = password_hash($Pass, PASSWORD_DEFAULT, ['cost' => 12]); 
echo $Pass1; 

$パス1あなたは$ 2Y $ 12 $を参照してくださいハッシュされたパスワードの先頭に$ 2Y $ 12 $ cnxAUfdMyA67QmsCW.x2aOVxvSyLPb/idLgklfAJOG5BPDcNlV1ba

で、あなたはパスワードのすべてが表示されますあなたは最初に同じことをするでしょう。これは、PHPがアルゴリズムとコストをどのように知っているかを示しています。ですから、パスワードを確認したいときに同じである、あなたがしなければならないすべては、次のとおりです。

$verified = password_verify('greatPassword1', $Pass1); 
// True 

$verified = password_verify('wrongPassword1', $Pass1); 
// False 

あなたが20のコストを使用している場合は、最も可能性の高いハッシュ化の先頭に$ 2Y $ 20 $が表示されますパスワード。私のPHPは30秒以上の実行時間を許すように設定されていなかったので、低コストの値に変更しました。

関連する問題