ホームページ  >  記事  >  バックエンド開発  >  Bcrypt はランダム ソルトを使用してハッシュ化されたパスワードをどのように検証しますか?

Bcrypt はランダム ソルトを使用してハッシュ化されたパスワードをどのように検証しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-20 17:08:29383ブラウズ

How Does Bcrypt Verify Hashed Passwords with Random Salts?

Bcrypt とランダムに生成されたソルトについて

パスワードを安全にハッシュするための業界標準アルゴリズムである Bcrypt は、パスワード保護を強化するためにランダム ソルトを採用しています。 。ただし、ユーザーは、この一見ランダムな要素を考慮しながら検証プロセスがどのように機能するのか疑問に思うかもしれません。

ソルトの役割

ソルトは、パスワードに追加される前に一意のプレフィックスとして機能します。ハッシュ化。このランダム化された値により、各パスワードが同一であっても個別のハッシュが生成されます。予測できないソルトを使用することで、攻撃者はパスワード ハッシュを事前計算できなくなり、ユーザー アカウントを侵害することが大幅に困難になります。

ハッシュ化されたパスワードの構造

ソルトはランダムに生成されます、結果のハッシュ化されたパスワードに含まれます。ハッシュ化されたパスワードは、次のようないくつかの部分で構成されます。

  • アルゴリズム タイプ (この場合、bcrypt)
  • コスト パラメーター (ハッシュの計算強度を決定)
  • ランダムSalt
  • ハッシュ化されたパスワード

検証プロセス

パスワードを検証する際、ハッシュ化されたパスワードが bcrypt アルゴリズムに提供されます。このアルゴリズムはソルト部分を抽出し、それを使用して指定されたパスワードをハッシュします。

このプロセスは本質的に、ハッシュされたパスワードを生成した最初のハッシュ操作を反映しています。新しく生成されたハッシュが保存されているハッシュと一致する場合、指定されたパスワードは正しいと検証されます。

パスワード「password」に対して生成されたハッシュ化されたパスワードを考えてみましょう。

y$abcdefg...123456789...
  • $2y は bcrypt アルゴリズムを示します
  • 10 はコスト パラメーターです
  • abcdefg... はソルトです
  • 123456789...ハッシュされたパスワードです

「パスワード」が正しいかどうかを確認するには、次のものが使用されます:

crypt("password", "y$abcdefg...123456789...")

この操作の結果は、次の場合に最初に生成されたハッシュと同一になります。 「パスワード」は正しいです。これは、ハッシュされたパスワードにソルトが含まれており、元のハッシュ操作を再作成できるためです。

以上がBcrypt はランダム ソルトを使用してハッシュ化されたパスワードをどのように検証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。