bcryptプレイグラウンド

コスト4〜16でbcryptハッシュを生成。22文字の独自ソルトも指定でき、ハッシュをバージョン・コスト・ソルト・ハッシュに分解して表示し、照合もできます。

72 バイト中 0 バイト使用

2^コスト = 1,024 ラウンド

空欄ならランダムなソルトを使います。

bcrypt(Provos & Mazières, 1999)は適応型ハッシュで、コストを 1 上げるごとに処理量が 2 倍になります。サーバーでのログインが約 250 ms 以内に収まる最大のコスト(10 以上)を選んでください。出力は $2b$ プレフィックスを使います。$2a$ や $2y$ のハッシュも同じように検証できます。

パスワードをハッシュと照合

すべてブラウザ内で実行されます。データがアップロードされることはありません。

bcryptプレイグラウンドとは?

bcryptを試せるツールです。コスト係数を選び、特定のソルトを入力するかランダムなものを使うと、得られたハッシュがバージョン、コスト、ソルト、ハッシュに分割され、所要時間も表示されます。照合機能は、$2a$、$2b$、$2y$のハッシュに対してパスワードを確認します。

bcryptプレイグラウンドの使い方

  1. パスワードを入力します。ヒントには、bcryptの72バイトのうち何バイトが使われているかが表示されます。
  2. コスト係数(4〜16)を設定し、必要なら22文字のソルトも指定します。
  3. ハッシュ化をクリックして、エンコード済みハッシュ、その各部分、所要時間を確認します。
  4. 照合パネルにbcryptハッシュを貼り付けて、パスワードをテストします。

例

入力
Password password, cost 4, salt abcdefghijklmnopqrstuu
出力
$2b$04$abcdefghijklmnopqrstuughE8Ev8uGFaUgY2cNEySvxngrb/Jzdm

同じパスワードとソルトでの pyca/bcrypt の出力と一致します。

bcryptプレイグラウンドを使うべき場面

既知のソルトでbcryptハッシュを再現したり、所要時間を測ってコスト係数を決めたり、デバッグ中にデータベースのハッシュを照合したりするときに使います。新しい設計にはArgon2idを推奨します。

bcryptプレイグラウンドの仕組み

bcrypt(Provos & Mazières、1999年)は、負荷の高いEksBlowfishの鍵設定を2^cost回実行し、その後「OrpheanBeholderScryDoubt」を64回暗号化します。16バイトのソルトと23バイトの結果は、bcrypt独自のBase64アルファベット(./A–Za–z0–9)で書き出されます。計算にはhash-wasm(WebAssembly)を使います。bcryptは72バイト目以降をすべて無視するため、72 UTF-8バイトを超えるパスワードは拒否されます。

一般的な使用例

  • 各コスト係数にかかる時間の測定
  • 固定ソルトでのテストベクターの再現
  • PHPの$2y$ハッシュが照合できるかの確認
  • bcryptハッシュの構造の説明

よくある質問

どのコスト係数を使うべきですか?

OWASPでは10以上です。サーバーでのハッシュ化が約250ミリ秒以内に収まる最大の値を選んでください。1増えるごとに時間は2倍になります。

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

古い実装のバグ修正を示す識別子です。72バイトまでのパスワードでは同じハッシュになり、3つともここで照合できます。

長いパスワードが拒否されるのはなぜですか?

bcryptは最初の72バイトしか使いません。黙って切り詰めると異なるパスワードが衝突してしまうため、ツールは代わりに拒否します。

他のカテゴリを見る