DevToolPal
日本語

Bcrypt ハッシュ生成・照合

指定したコストでパスワードを bcrypt ハッシュ化し、パスワードが bcrypt ハッシュと一致するか確認します。

ローカルで処理、アップロードなし

オプション

モード

パスワード

結果

結果はここに表示されます

機能

bcrypt は、わざと遅くなるよう設計されたパスワードハッシュ関数です。MD5 や SHA-256 は 1 秒間に数十億回計算できますが、bcrypt には調整可能なコストがあり、データベースを盗んだ攻撃者が 1 回推測するたびに大きな計算量を強います。Argon2 や scrypt と並んで、今でもパスワード保存に最もよく使われる方式の一つです。

このツールでできることは 2 つです:

  • ハッシュ化:選んだコストとバージョンのプレフィックスで、パスワードを bcrypt ハッシュにします。
  • 照合:データベースやフレームワークのシードファイルにあるような既存の bcrypt ハッシュと、パスワードが一致するか確認します。

使い方

  1. パスワードを入力するか、サンプルをクリックします。
  2. ハッシュ化モードではコストとバージョンを選びます。ハッシュはすぐに表示され、新しいソルトで別のハッシュを作れます。
  3. 照合モードでは照合する bcrypt ハッシュを貼り付けます。パスワードが一致するかどうかが表示されます。

bcrypt ハッシュの読み方

$2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK のようなハッシュは 4 つの部分からなります:バージョン 2b、コスト 10(2¹⁰ ラウンドの鍵セットアップ)、22 文字のソルト、31 文字のチェックサムです。後でパスワードを照合するのに必要な情報はすべてこの 1 つの文字列に含まれるので、保存するのはハッシュだけで済みます。

知っておきたい制限

bcrypt はパスワードの先頭 72 バイトしか読みません。それより長いパスワードや、非 ASCII 文字(UTF-8 では 1 文字 2〜4 バイト)を多く含むパスワードは黙って切り詰められます。その場合はツールが警告します。非常に長いパスフレーズを受け付けたい場合は、事前にハッシュするか Argon2id を検討してください。

よくある質問

› 同じパスワードでも毎回違うハッシュになるのはなぜですか?

ハッシュごとに新しい 16 バイトのランダムなソルトを使い、そのソルトはハッシュ自体に含まれます。同じパスワードが同じハッシュにならないための意図的な仕組みです。パスワードを確かめるときはハッシュ文字列を比べず、「照合」を使ってください。

› コストはいくつにすべきですか?

ログインごとにサーバーが許容できる最大のコストを選びます。現在は 10〜12 が一般的です。1 増えるごとに処理量は 2 倍になります。本番のハードウェアで計測し、1 回あたり 100〜300 ms 程度を目安にするのが一般的です。

› $2a$、$2b$、$2y$ の違いは何ですか?

アルゴリズムは同じです。$2b$ は OpenBSD の現行プレフィックス、$2y$ は PHP の password_hash が出力するもの、$2a$ は古いものです。ほとんどのライブラリは 3 つとも受け付けるので、システムが求めるものを選んでください。

› パスワードはどこかに送信されますか?

いいえ。ハッシュ化も照合もブラウザ内で行われます。パスワードと照合するハッシュはこのページのメモリ上にだけあり、保存も共有リンクへの追加もされません。