Laravelは、人気のあるPHP Web開発フレームワークです。パスワードの暗号化は、平易なテキストのパスワードを保存するとセキュリティリスクをもたらす可能性があるため、Laravel開発において一般的な要件です。 Laravelは、強力で使いやすいローカルパスワードハッシュアルゴリズム-Bcryptを提供します。この記事では、Laravelで2つのBCRypt暗号化されたパスワードを比較する方法について説明します。
Bcryptは、Blowfish暗号化アルゴリズムに基づいたパスワードハッシュアルゴリズムであり、塩とコストの値を追加することでセキュリティを強化します。 Bcryptアルゴリズムは、パスワードに塩をスプライブし、ブローフィッシュを使用して暗号化し、長さ60文字のハッシュ値を出力します。以下は、PHPを使用したpassword_hash()
です
Laravelでは、 Hash :: Check()メソッドを使用してBcrypt Hashの後、Plantext Passwordをciphertextパスワードと簡単に比較できます。 Check()メソッドは、プレーンテキストパスワードを暗号化されたパスワードと比較します。 2つが一貫している場合は、trueを返します。
if(hash :: check( 'secret'、$ hashedpassword)){ // 2つの文字列が一貫している場合は、trueを戻るします }
ここでは、 $ hashedPasswordは、データベースに保存されているbcryptハッシュ値です。
Check()メソッドを使用する場合は、最初のパラメーターがPlantextパスワードであり、2番目のパラメーターが暗号化されたハッシュパスワードであることを確認してください。次の式を覚えています。
「BPPでは、ストーブを比較してください」:最初のパラメーターはプレーンテキストパスワード(b)であり、2番目のパラメーターは暗号化されたBcryptハッシュ値(PP)です。つまり、最初のパラメーターを破ることができますが、2番目のパラメーターは安全です。
2つのBcryptハッシュを比較する完全な例を次に示します。
$ password = 'Secret'; $ hashedpassword = '$ 2Y $ 10 $ $ ljrd9sgr0h1ksk8vvqvcvcvcvcsqfpz1t2qkzckluxgdf9yoljxaf/6'; if(hash :: check($ password、$ hashedpassword)){ Echo 'パスワードマッチングが成功しました! '; } それ以外 { エコー 'パスワードマッチングが失敗しました! '; }
Check()メソッドは、2つの文字列が等しいかどうかを比較するだけでなく、ハッシュ文字列が正しい暗号化アルゴリズムを使用し、正しくフォーマットされることを確認することに注意してください。