Skip to content

Bcrypt ハッシュ生成・検証ツール

bcrypt パスワードハッシュをオンラインで生成・検証。コスト調整、$2b$/$2a$/$2y$ プレフィックス対応。100% ブラウザ内で処理し、パスワードは一切送信されません。

トラッキングなし ブラウザで動作 無料
100% ブラウザ内 — パスワードはデバイスから一切送信されません。
Bcrypt ハッシュ
ハッシュの構造
バージョン
コスト
ソルト
ダイジェスト

Node bcrypt、Python bcrypt、Apache htpasswd と相互チェックした出力で bcrypt のリファレンス挙動に準拠 — Go Tools セキュリティチーム · Jun 12, 2026

Bcrypt とは?

Bcrypt は、パスワードを安全に保存するために特別に設計されたパスワードハッシュ関数です。パスワードを平文で保持する代わりに、サーバーは一方向の bcrypt ハッシュを保存します。ユーザーがログインすると、サーバーは送信されたパスワードを同じ方法でハッシュ化し、2 つのハッシュが一致することを確認します。Bcrypt は Blowfish 暗号の上に構築され、1999 年に Niels Provos と David Mazières によって設計されました。SHA-256 のような汎用ハッシュとは一線を画す、意図的な特徴が 1 つあります。それは意図的に遅いことであり、ハードウェアが高速になるにつれて調整可能なコスト係数で時間をかけてさらに遅くできます。

bcrypt ハッシュは、自己記述的な 1 つの 60 文字の文字列です。例えば $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq です。これは 4 つの部分を含みます。バージョン$2b$)、コスト12、対数的なワークファクター)、22 文字の Base64 ソルト、31 文字の Base64 ダイジェストです。ソルトはランダムでハッシュに埋め込まれているため、同じパスワードでも毎回異なるハッシュが生成されます。これによりレインボーテーブルを無力化し、2 人のユーザーが同じパスワードを選んだ事実を隠します。検証は保存されたハッシュからソルトとコストを読み戻して候補を再ハッシュ化するので、bcrypt がパスワードを復元するためにハッシュを逆変換する必要は(そしてできることも)ありません。

本ツールはバンドルされた bcrypt 実装を使って完全にブラウザ内で動作します。パスワードやハッシュがアップロードされることは一切ありません。選んだコストとプレフィックスでハッシュを生成したり、既存のハッシュに対してパスワードを検証したり、ハッシュの構造を読んだりするのに使えます。他のセキュリティツールとも自然に組み合わせられます。htpasswd 生成ツール(bcrypt エントリを直接出力できます)で HTTP Basic 認証によりディレクトリを保護し、ランダムパスワード生成ツールでハッシュ化する強力なパスワードを作り、遅いパスワードハッシュではなく高速な汎用チェックサムが必要なときはSHA-256 生成ツールを使いましょう。どのアルゴリズムでパスワードを保存するか決めかねている場合は、bcrypt と Argon2、scrypt の比較で選択肢を比較してください。

// Node.js — bcryptjs / bcrypt (emits $2b$)
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash('correct horse battery staple', 12);
// -> $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
const ok = await bcrypt.compare('correct horse battery staple', hash); // true

# Python — bcrypt
import bcrypt
hashed = bcrypt.hashpw(b'correct horse battery staple', bcrypt.gensalt(12))
bcrypt.checkpw(b'correct horse battery staple', hashed)  # True

# PHP — password_hash (emits $2y$)
$hash = password_hash('correct horse battery staple', PASSWORD_BCRYPT, ['cost' => 12]);
password_verify('correct horse battery staple', $hash); // true

# Apache htpasswd CLI — bcrypt entry to stdout (-B bcrypt, -b inline, -n stdout)
htpasswd -Bbn admin 'correct horse battery staple'
# -> admin:$2y$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq

主な機能

Bcrypt ハッシュを生成

任意のパスワードから、新しいランダムソルト付きの標準的な 60 文字の bcrypt ハッシュを生成します。クリックするたびに異なる有効なハッシュが得られ、まさに実際のパスワードストアと同じ挙動です。

調整可能なコスト係数

ワークファクターを 4〜15 で調整します(12 が現代の既定値)。各ステップで計算時間がおよそ倍になるのを体感し、強力でありながらログインに十分速いコストを選べます。

バージョンプレフィックスを選択

$2b$(現在の bcryptjs 標準)、$2y$(PHP / Apache htpasswd)、$2a$(最初のもの)を出力します。いずれもライブラリをまたいだ検証で互換性があります。

ハッシュに対してパスワードを検証

保存されたハッシュと候補のパスワードを貼り付けると、復号せずに埋め込まれたソルトとコストで再ハッシュ化し、一致するかどうかを即座に確認します。失敗したログインのデバッグに最適です。

ハッシュの構造の内訳

任意の bcrypt ハッシュをバージョン・コスト・ソルト・ダイジェストに分解して表示し、$2b$12$... 文字列の構造が一目で明らかになります。

100% クライアントサイド

ハッシュ化と検証はすべてブラウザ内でローカルに行われます。パスワードやハッシュがサーバーに送られることはないので、実際の認証情報をプライベートに扱えます。

Bcrypt 生成ツールの例

bcrypt ハッシュ(コスト 12、$2b$)

password: correct horse battery staple
cost: 12
prefix: $2b$
$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq

コスト 12、$2b$ プレフィックスの bcrypt ハッシュです。ソルトはランダムなので、同じパスワードでも毎回異なるハッシュが生成されますが、いずれも元のパスワードに対して正しく検証できます。

ハッシュに対してパスワードを検証

password: correct horse battery staple
hash: $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
✓ 一致 — このハッシュに対してパスワードは正しいです

検証はハッシュを復号するわけではありません。bcrypt は保存されたハッシュに埋め込まれたソルトとコストを使って候補のパスワードを再ハッシュ化し、結果を比較します。一致すればパスワードが正しいということです。

ハッシュの構造の内訳

$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
version: $2b$ · cost: 12 · salt: dUSFKqT1FCMYZ6hcQfsxuO · digest: NizEqcX8IGK8snfVSowP5Uu.TDJoPUq

すべての bcrypt ハッシュは自己記述的です。バージョンタグ、2 桁のコスト、22 文字の Base64 ソルト、31 文字の Base64 ダイジェストが、1 つの 60 文字の文字列にまとまっています。本ツールはこれらを分解して一目で読めるようにします。

Bcrypt 生成ツールの使い方

  1. 1

    パスワードを入力しコストを選ぶ

    「生成」タブで、パスワードを入力するか「ランダムパスワード」をクリックします。コスト係数(4〜15、12 が現代の既定値)と、$2b$・$2a$・$2y$ のバージョンプレフィックスをスタックに合わせて選びます。

  2. 2

    ハッシュを生成する

    bcrypt ハッシュは新しいランダムソルトでローカルに計算され、1 つの 60 文字の $2b$12$... 文字列として表示されます。「コピー」をクリックして取り出すか、ソルト付きの新しいハッシュのために再生成します。

  3. 3

    構造を読むか検証する

    構造パネルはハッシュをバージョン・コスト・ソルト・ダイジェストに分解します。「検証」タブに切り替え、保存されたハッシュとパスワードを貼り付ければ、一致するかどうかを即座に確認できます。

Common Errors

ハッシュを復号しようとする

Bcrypt は一方向で復号はありません。パスワードをチェックするには、ダイジェストを逆変換しようとするのではなく、ハッシュに対して検証してください。

✗ 誤り
bcrypt.decrypt(hash)  // no such operation
✓ 正しい
bcrypt.compare(password, hash)  // returns true / false

コストを低く設定しすぎる

4 や 6 のような低いコストはほぼ瞬時にハッシュ化しますが、攻撃者が漏洩したハッシュを高速に総当たりすることも許してしまいます。基準として 12 を使ってください。

✗ 誤り
cost: 4  // far too fast, weak against brute force
✓ 正しい
cost: 12  // modern default, resists brute force

同じハッシュが 2 回得られると期待する

ソルトがランダムなので、同じパスワードを再びハッシュ化すると異なる文字列になります。2 つのハッシュのバイト一致で確認するのではなく、検証で比較してください。

✗ 誤り
hash(pw) === storedHash  // fails — different salts
✓ 正しい
bcrypt.compare(pw, storedHash)  // correct check

よくある使用例

データベースにパスワードハッシュを初期投入
管理者またはテスト用アカウントの bcrypt ハッシュを生成して users テーブルに直接挿入し、完全なサインアップフローを先に組まなくてもログインできるようにします。
失敗するログインをデバッグ
既知の正しいパスワードを保存されたハッシュに対して検証し、ハッシュ自体が正しいかどうかを確認することで、認証コードからバグを切り分けます。
適切なコスト係数を選ぶ
自分のハードウェアで複数のコストレベルで生成し、それぞれにかかる時間を体感してから、実際のログインを遅くせずに総当たりに耐えるワークファクターを選びます。
htpasswd / Basic 認証エントリを作成
Apache、Docker Registry、Caddy の認証情報用に $2y$ bcrypt ハッシュを生成し、HTTP Basic 認証の user:hash 行に貼り付けます。
テストフィクスチャを作成
実際の認証サーバーを立てずに、ログインやパスワードリセットフローの統合テストを初期化するための bcrypt ハッシュを生成します。
見つけたハッシュを監査
設定ファイルやダンプ内の bcrypt 文字列の構造を読んでコスト係数を確認し、期待するパスワードに対して検証して一致を確かめます。

技術的な詳細

Blowfish ベース、適応的なコスト
Bcrypt は Blowfish 暗号の高コストな鍵セットアップからハッシュを導出し、それを 2^cost 回繰り返します。コストを 1 上げると処理量が倍になり、ハードウェアの向上に伴っても関数を総当たりに対して遅く保ちます。
128 ビットのランダムソルト
各ハッシュは 16 バイト(128 ビット)のランダムソルトを埋め込み、コストの後に 22 文字として Base64 エンコードします。ソルトにより各ハッシュが一意になるため、同一のパスワードがダイジェストを共有することはなく、レインボーテーブルは適用できません。
自己記述的な 60 文字フォーマット
出力は $version$cost$salt+digest であり、検証に必要なすべてを含む固定 60 文字の文字列です。別途ソルト列やパラメータストアは不要です。
72 バイトのパスワード上限
Bcrypt はパスワードの先頭 72 バイトのみをハッシュ化し、それを超える部分は黙って無視されます。非常に長いパスフレーズには、bcrypt の前に(例えば SHA-256 で)事前ハッシュ化するのが一般的な緩和策です。
復号ではなく検証
Bcrypt は一方向です。検証は保存されたハッシュから解析したソルトとコストを使って候補のパスワードを再ハッシュ化し、ダイジェストを一定時間で比較します。平文を復元する操作は存在しません。
正直な注記と注意事項
ハッシュはローカルに計算され、稼働中のシステムに対して照合されることはありません。コピーしたハッシュや入力したパスワードはクリップボードとブラウザのメモリに残ります。秘密として扱い、本番に貼り付けた後はクリップボードをクリアしてください。

ベストプラクティス

コスト 12 以上を使う
コスト 12 は現代の基準です。ログインの遅延が許容範囲に収まる限り、機密性のあるシステムでは 14 に向けて上げます。定期的に再評価してください。5 年前に十分遅かったものは、今日では安価に攻撃できます。
平文を保存・記録しない
元のパスワードではなく bcrypt ハッシュのみを保存し、パスワードをログやエラーメッセージから排除してください。平文がハッシュと一緒に漏洩すると、bcrypt の価値はすべて失われます。
ソルトは bcrypt に任せる
Bcrypt は安全なランダムソルトを生成して埋め込んでくれます。独自の固定ソルトを与えたり再利用したりしないでください。ハッシュごとのランダムソルトこそがレインボーテーブルを無力化するものです。
72 バイト上限に注意
長いパスフレーズを受け付ける場合、bcrypt は 72 バイトを超えるバイトを無視することを忘れないでください。非常に長い入力を完全に扱う必要があるなら、SHA-256 での事前ハッシュ化を検討するか、Argon2id を評価してください。

Bcrypt 生成ツールの FAQ

オンラインの bcrypt 生成ツールは安全に使えますか?
本ツールに関しては安全です。入力したものは一切ブラウザの外に出ないからです。パスワード、生成されたハッシュ、検証のすべてがお使いのデバイス上の JavaScript でローカルに実行されます。ネットワークリクエストもログもストレージもありません。ブラウザのデベロッパーツール(F12 →「ネットワーク」タブ)を開いてハッシュを生成し、外向きのリクエストがゼロであることを確認したり、インターネットを切断してもツールが動作し続けることを確認したりすれば自分で検証できます。これはパスワードをサーバーに POST する怪しい生成ツールとは正反対です。とはいえ習慣として、単に試しているだけのときは本番のパスワードよりも使い捨てのテスト用パスワードを使うほうがよいでしょう。
オンラインで bcrypt ハッシュを生成するにはどうすればよいですか?
「生成」タブを開き、パスワードを入力する(または「ランダムパスワード」をクリックして強力なものを作る)か、コスト係数を選び(12 が現代の既定値)、バージョンプレフィックスを選びます。ほとんどの現代的なスタックには $2b$、PHP と Apache には $2y$、最初の識別子には $2a$ です。bcrypt ハッシュは新しいランダムソルトでブラウザ内で即座に計算され、ワンクリックでコピーできる 1 つの 60 文字の $2b$12$... 文字列として表示されます。何もアップロードされません。パスワードもハッシュもお使いのデバイスから離れることはありません。いつでも再生成すれば、同じパスワードに対する別の有効なハッシュが得られます。各ハッシュは異なるランダムソルトを持つからです。
bcrypt ハッシュは復号したり元に戻したりできますか?
いいえ。bcrypt は一方向のパスワードハッシュ関数であり暗号化ではないので、鍵もなく、ハッシュを元のパスワードに戻す復号操作もありません。ハッシュからパスワードを知る唯一の方法は、候補を推測してそれぞれをハッシュ化し一致するまで試すことです。これはまさに bcrypt の調整可能なコスト係数が遅く高コストにするよう設計されている対象です。だからこそハッシュを復号するのではなく、ハッシュに対してパスワードを検証します。本ツールはハッシュに保存されたソルトとコストで候補を再ハッシュ化し、結果が同一かどうかをチェックします。
どのコスト係数(ワークファクター)を使うべきですか?
コスト 12 は現代の既定値であり、セキュリティと速度の妥当なバランスです。コストは対数的なワークファクターで、1 増えるごとに内部のラウンド数が倍になります。そのためコスト 13 はコスト 12 のおよそ 2 倍の計算・検証時間がかかり、コスト 11 は半分です。コストを高くすると、漏洩したハッシュを総当たりする攻撃者を遅くできますが、正規のログインごとにも遅延が加わります。そのため、実際のハードウェアで認証が遅く感じるところを超えて上げないでください。低リスクのエンドポイントならコスト 10 でも許容できます。機密性のあるものには 12〜14 が適しています。有効範囲は 4〜31 で、本ツールでは 4〜15 を選べます。
$2a$、$2b$、$2y$ の違いは何ですか?
これらは同じ bcrypt アルゴリズムのバージョンプレフィックスであり、違いは一部の実装が文字列長や上位ビット文字をどう扱うかに関する歴史的なバグ修正に由来します。$2a$ は最初に広く使われた識別子、$2b$ は bcryptjs ライブラリやほとんどの現代的な実装が出力する修正済みの現行バージョン、$2y$ は PHP と Apache の htpasswd が使う識別子です。検証の点では互換性があります。ここで生成したハッシュはどのプレフィックスでもライブラリをまたいで正しく検証されます。すべて同じ中核の関数を実行しているからです。バイト単位の互換性が必要な場合は、お使いのスタックが期待するプレフィックスを選んでください。
bcrypt ハッシュに対してパスワードを検証するにはどうすればよいですか?
「検証」タブに切り替え、保存された bcrypt ハッシュ(完全な $2b$12$... 文字列)と候補のパスワードを貼り付けると、ツールが一致するかどうかを即座に教えてくれます。仕組みとしては、ハッシュに埋め込まれたソルトとコストを取り出し、まさにそのパラメータで候補のパスワードを再ハッシュ化し、新しいダイジェストを保存されたものと比較します。復号は一切関与しません。これはログインシステムがパスワードをチェックする方法そのものです。平文を復元することはなく、送信されたパスワードを再ハッシュ化すると保存されたハッシュが再現されることを確認するだけです。
bcrypt と Argon2、scrypt — どれを使うべきですか?
3 つとも意図的に遅く、ソルト付きのパスワードハッシュ関数であり、いずれもパスワードの保存において素の SHA-256 よりはるかに優れています。bcrypt は最も広くサポートされ実戦で鍛えられており、シンプルに調整できるコストを備えています。主な制約は 72 バイトのパスワード上限と、CPU バウンドのみという点です。scrypt はメモリハードネスを加え、大規模な GPU/ASIC 攻撃のコストを高めます。Argon2(特に Argon2id)は Password Hashing Competition と OWASP による現在の推奨で、時間・メモリ・並列度を独立して調整します。今日新たに選ぶなら Argon2id が最も強力な既定値ですが、bcrypt も優れた安全な選択肢のままです。特にライブラリのサポートや相互運用性が重要な場合に適しています。トレードオフはbcrypt と Argon2、scrypt の比較で詳しく解説しています。
bcrypt ハッシュが毎回異なるのはなぜですか?
bcrypt はハッシュごとに新しいランダムなソルトを生成し、ハッシュ化の前にソルトを混ぜ込むからです。そのため同じパスワードでも「生成」をクリックするたびに、まったく異なる 60 文字の文字列が生成されます。そしてそれこそが狙いです。攻撃者がレインボーテーブルを事前計算したり、2 人のユーザーが同じパスワードを共有していると見抜いたりするのを防ぎます。ソルトは秘密ではなく、ハッシュの中(コストの後の 22 文字)に保存されるので、検証時に読み戻せます。ハッシュを再生成しても、同じパスワードに対する別の有効なハッシュが得られるだけで、そのいずれも正しく検証されます。

JWT デコーダー — オンライン解析ツール

セキュリティツール

JWTトークンを無料のJWTデコーダーでオンラインデコード。ヘッダー、ペイロード、署名、有効期限、アルゴリズム、クレームを即座に検査できます。100%ブラウザ動作 — トークンはデバイスから外に出ません。登録不要、追跡なし。

JWT エンコーダー&ジェネレーター

セキュリティツール

無料のオンラインJWTジェネレーター&エンコーダー。ヘッダーとペイロードを組み立て、HS256、RS256、ES256で即座に署名できます。100%ブラウザ動作 — シークレットと鍵はデバイスから外に出ません。

MD5ハッシュジェネレーター&ファイルチェックサムツール

セキュリティツール

無料オンラインMD5ハッシュ生成ツール。ブラウザ上でMD5・SHA-256・SHA-1・SHA-512のハッシュ値を即座に生成。テキストやファイルのチェックサム検証・比較、ワンクリックコピー対応。登録不要でデータはサーバーに送信されません。

ランダムパスワード生成 — カスタマイズ可能&安全

セキュリティツール

無料のオンラインランダムパスワード生成ツール。ブラウザ上で安全な強力パスワードを即座に自動生成できます。長さや文字種のカスタマイズ、最大50個の一括生成に対応。エントロピー分析付き強度メーター搭載。データはサーバーに送信されません。

SHA-1ハッシュジェネレーター(160ビット・レガシー)

セキュリティツール

ブラウザ上でSHA-1ハッシュを生成。40文字の16進数出力、アップロード不要。Gitコミット確認・旧証明書フィンガープリント検証・移行監査向けレガシーツール。データはデバイス外に出ません。

SHA-256ハッシュジェネレーター&チェックサムツール

セキュリティツール

SHA-256ハッシュをオンラインで無料生成。テキストやファイルをブラウザ上でハッシュ化し、チェックサムを検証して64文字の16進数出力をコピー。登録不要、データはページ外に出ません。