Bcryptハッシュジェネレーターとは?

bcryptアルゴリズムを使用して、ソルト付きの安全なパスワードハッシュを生成します。データベース保存用のパスワードハッシュ化や、既存ハッシュと平文の照合に使えます。

bcrypt は数えきれないほどの本番認証システムを支えてきたパスワードハッシュ方式です。ハッシュごとにランダムなソルトが埋め込まれるので、同じパスワードでも結果はまったく異なります。コストファクター(4〜18)は値を 1 上げるごとに計算量が倍になり、総当たり攻撃を実用的でない速度まで遅らせつつ、ログイン遅延は許容範囲に抑えられます。

使い方

  1. ハッシュ化したいパスワードまたは文字列を入力し、コストファクター(ソルトラウンド)を4〜18の範囲で選択します。
  2. 「生成」をクリックしてbcryptハッシュを作成します。コストファクターが高いほど強固なハッシュが生成されますが、計算に時間がかかります。
  3. 生成されたハッシュをアプリケーションにコピーするか、「検証」タブでパスワードと既存ハッシュを照合します。

使用するタイミング

  • 新規ユーザーのパスワードをデータベースに書き込む前にハッシュ化する。
  • 既存の $2b$ ハッシュを使ってログイン処理を再現・検証する。
  • 本番ハードウェアでハッシュ時間を計測し、最適なコストを決める。

結果

バックエンド開発者がユーザーパスワードを安全に保存する際、12ソルトラウンドでハッシュ化し、PostgreSQLデータベースに保存するための$2b$形式のハッシュ文字列を取得します。

よくある質問

本番ではコストファクターをいくつに設定すべき?
現在のサーバー機なら 12 が一つの下限で、14 が標準になりつつあります。ログインあたりの所要時間が 200〜500 ミリ秒に収まるあたりが目安です。100 ミリ秒未満は弱すぎ、1 秒を超えると非力な端末のユーザー体験を損ねます。
同じパスワードなのに毎回ハッシュが違うのはなぜ?
bcrypt は呼び出しごとに 16 バイトのソルトを新しく作り、ハッシュ文字列の中に組み込みます。これが狙いで、二人とも「letmein」をパスワードにしてもデータベースには全く別の文字列が並ぶため、漏えいしても一枚のレインボーテーブルでは解読できません。
パスワード長に上限はある?
bcrypt は 72 バイトを超えた入力を黙って切り捨てます。長いパスフレーズを許容するなら、先に SHA-256 でダイジェストを取ってから bcrypt に渡してください。多くのアプリは入力を 64〜72 文字に制限しています。
別の bcrypt ライブラリで作ったハッシュも検証できる?
できます。$2a$、$2b$、$2y$ の接頭辞は PHP、Node、Python、Ruby、Go、Java の実装間で相互運用できます。どれで作ったハッシュでも検証タブに貼れば、元のパスワードと照合できます。
2026 年でも bcrypt のままで大丈夫? argon2 に乗り換えるべき?
今は argon2id が推奨ですが、bcrypt も安全で、どの言語でも使えます。既存システムで bcrypt が動いているなら急いで移行する必要はありません。新規開発なら最初から argon2 を選ぶのが無難です。

関連ツール