🔐 bcryptハッシュ情報
bcryptパスワードハッシュを解析・分析。バージョン、コスト係数、ソルト、ハッシュダイジェストの各要素を表示。
bcryptハッシュ情報ツールについて
このツールはbcryptパスワードハッシュを解析し、構成要素(バージョン識別子、コスト係数、ソルト、ハッシュダイジェスト)に分解します。上にハッシュを貼り付けて解析をクリックすると構造を確認できます。すべてブラウザ内で完結——サーバーへのアップロードは一切ありません。
bcryptハッシュ形式
bcryptハッシュはModular Crypt Formatに従い、$バージョン$コスト$ソルト+ハッシュの構造です。各フィールドの説明:
- バージョン ——
$2a$、$2b$、$2y$、$2x$。2bが現在の標準(OpenBSD)。2aはオリジナル版、2yは一部PHP実装で使用、2xは既知のバグを持つレガシー変体。 - コスト係数 —— 04〜31の2桁の数値。ハッシュ関数は
2^コスト回の反復を実行。値12は4,096ラウンドを意味。コストが高いほどハッシュ化が遅くなり、ブルートフォースに強くなります。 - ソルト —— 22文字、bcrypt専用base64アルファベット(
./A-Za-z0-9)で128ビットのランダムソルトをエンコード。 - ハッシュダイジェスト —— 31文字、同じアルファベットでBlowfishベースの鍵導出が生成する184ビット出力をエンコード。
総長
完全なbcryptハッシュは60文字:$2b$(4)+ 12(2)+ $(1)+ 22文字ソルト + 31文字ダイジェスト = 60。一部のデータベースは先頭の$や末尾のデータを保存するため、59〜60文字の値が一般的です。
コスト係数の選び方
コスト係数は各検証にかかる時間を直接制御します。経験則:本番ハードウェアで1回のハッシュ化が約250〜500ミリ秒になるように設定:
- コスト10 —— 約1,024ラウンド。高速だが、GPUを持つ現代の攻撃者には日益弱く。
- コスト12 —— 約4,096ラウンド。2024年現在多くのフレームワークの一般的なデフォルト。
- コスト14 —— 約16,384ラウンド。強力だが高負荷下で顕著な遅延を追加。
- コスト31 —— 最大。本番環境では実用的でなく、高セキュリティのオフラインシナリオ専用。
ハードウェアの改善に伴いコストを定期的に引き上げてください。bcryptはログイン時に高い希望コストを検出し、新しいソルトで再エンコードすることでコスト引き上げをサポートします。
なぜbcrypt?
bcryptはNiels ProvosとDavid Mazièresが1999年に設計したパスワードハッシュ関数です。通常のSHA-256とは異なり、意図的に遅く設計され、調整可能なコスト係数を採用しているため、ハードウェアが高速化してもブルートフォースに強いままです。組み込みのソルトはレインボーテーブル攻撃を防ぎ、同じパスワードでも異なるハッシュ値になることを保証します。現代のパスワード保存にはbcrypt、scrypt、Argon2が推奨されます。
よくある質問
このツールはbcryptハッシュを生成できますか? いいえ——既存のハッシュの解析と分析のみを行います。bcryptの生成にはBlowfish暗号を数千回実行する必要があり、Web Crypto APIではなく専用の実装が必要です。
bcryptハッシュからパスワードを復元できますか? いいえ。bcryptは一方向関数です。「解読」する唯一の方法は候補パスワードを一つずつ試すことですが、それこそがコスト係数が高コストにするものです。
ソルトは秘密ですか? いいえ。ソルトはハッシュの一部として平文で保存されるのが設計意図です。その目的は各ハッシュを一意にすることであり、秘密にすることではありません。bcryptハッシュは安全に共有できます——攻撃は計算量的に依然として困難です。
「推定制御時間」とは? コスト係数に基づく1回の検証にかかる時間の大まかな概算です。実際のパフォーマンスはハードウェアと実装により異なります。
どの変体を使うべきですか? 新しいアプリケーションでは$2b$でハッシュを生成し、コスト係数は12以上を使用してください。既知の符号拡張バグのため$2x$は避けてください。