Password Hash Generator & Verifier パスワードハッシュ生成・検証ツール
bcrypt、Argon2id、PBKDF2 などのパスワードハッシュをすばやく生成・検証できます。Salt の自動生成、Cost 設定、性能ベンチマーク、アルゴリズム比較に対応し、開発者やセキュリティ学習者向けに設計されています。
パスワード入力
アルゴリズム
bcrypt
推奨
Argon2id
最も推奨
PBKDF2
利用可能
SHA-256
⚠️ 教育
長さ:0 bytes
検証
結果を生成
ベンチマーク — ブラウザー性能
⚠️ これはブラウザ上の性能テストです。実際のサーバー処理はより高速です(約 5~20 倍)
アルゴリズム比較
| アルゴリズム | セキュリティ | 速度 | 推奨事項 |
|---|---|---|---|
| SHA-256 | ⭐ | ⭐⭐⭐⭐⭐ | ❌ パスワードの保存は推奨されません |
| PBKDF2 | ⭐⭐⭐ | ⭐⭐⭐ | ⚠️ 利用可能(高い反復回数を推奨) |
| bcrypt | ⭐⭐⭐⭐ | ⭐⭐ | ✅ 推奨 |
| Argon2id | ⭐⭐⭐⭐⭐ | ⭐ | 🏆 最もおすすめ |
セキュリティ評価では、総当たり耐性、ASIC/GPU への耐性、設計の成熟度などを考慮します。
よくある質問(FAQ)
Password Hash は通常の Hash と何が違いますか?
• 意図的に低速:Cost Factor で計算時間を制御し、brute force cracking のコストを高めます
• Salt を自動追加: password ごとに異なる Salt を使い、rainbow table attack を防ぎます。
• GPU/ASIC 耐性:Argon2id は大量の memory を必要とするため、GPU による parallel acceleration が難しくなります
結論:パスワード保存に MD5 や SHA-256 を直接使用しないでください、bcrypt、Argon2id、または PBKDF2 を使用してください。
なぜ Salt が必要なのですか?
• レインボーテーブル対策ウォッチ:Salt が毎回異なるため、precomputed Hash comparison table(rainbow table)は利用できません
• 重複防止:2 人のユーザーが同じ password を設定しても、生成される hash は異なります。
• クラッキングコストを増加: attacker は Salt ごとに個別の brute force cracking を行う必要があり、一括処理しにくくなります。
標準的な方法は、パスワードごとに異なるランダム Salt(最低 16 byte)を生成し、Salt を Hash と一緒に保存することです。bcrypt の出力には Salt がすでに含まれています。
bcrypt、Argon2id、PBKDF2 はどう使い分ければよいですか?
• bcrypt(広く推奨):1999 年に設計され、成熟して安定しており、幅広くサポートされています。Salt と Cost の仕組みを内蔵し、多くのフレームワークで標準的な選択肢になっています。
• PBKDF2(利用可):FIPS 認定の標準方式で、iteration 数によって強度を調整します。GPU/ASIC に弱いため、非常に多い iteration(数十万回)が必要です。
• SHA-256(学習用途のみ):パスワード保存には推奨されません。Salt がなく処理が速すぎるため、GPU による総当たり攻撃を受けやすいためです。
提案:新規プロジェクトでは Argon2id、既存プロジェクトでは bcrypt を維持する構成が一般的で、どちらも PBKDF2 より強力な選択肢です。
Cost Factor とは何ですか?
• Cost 8 — 高速で、低性能 hardware でも扱いやすい設定です(約 50ms)。
• Cost 10 - セキュリティと性能のバランスがよく、一般的に推奨される値(約 200 ms)
• Cost 12 — より安全で、高いセキュリティが必要な用途に適します(約 800ms)。
• Cost 14 — 非常に安全ですが、user experience へ影響する場合があります(約 3s)。
server 性能に合わせて Cost を調整し、1 回の verification が 200~500ms 程度になるようにすることを推奨します。hardware 性能が向上したら、Cost 値も段階的に引き上げてください。
なぜ not just use SHA-256 to store passwords のですか?
• 速すぎる:GPU は 1 秒に数十億回 SHA-256 を計算できるため、brute force cracking は時間の問題です
• Salt なし: 同じ password は同じ hash を生成するため、rainbow table attack が有効になります。
• GPU 耐性ゼロの設計: 大容量 Memory を必要とせず、GPU で大規模な並列計算が可能です。
Salt と複数回の反復処理を組み合わせても(PBKDF2 のように)、SHA-256 の基本設計はパスワード用ハッシュとして bcrypt や Argon2id より適しているわけではありません。
最も簡単な覚え方:Hash はファイル用、Password Hash はパスワード用に使用します。
ハッシュ化した後にパスワードを復元できますか?
パスワード検証時、システムはユーザーが入力したパスワードの hash を再計算し、データベースに保存されている hash と一致するか比較します。このツールの「verify」機能も同じ仕組みです。
password hash を「decrypt」または「restore」できると主張する service は信用しないでください。- Rainbow Table や一般的なパスワード辞書を使って照合するだけです。
パスワードハッシュ化完全ガイド
なぜ can't passwords be stored in clear text のですか?
データベースにパスワードを平文で保存していると、情報漏えい時に全ユーザーのパスワードがそのまま露出します。多くのユーザーは複数サイトでパスワードを使い回すため、攻撃者がその認証情報を使ってメール、銀行などのアカウントへ不正ログインする Credential Stuffing に悪用するおそれがあります。
パスワードハッシュはこの問題を緩和します。データベースが漏えいしても、攻撃者はハッシュ値から元のパスワードをそのまま逆算できません。十分に強いパスワードと適切なハッシュアルゴリズムを使用することが、アカウント保護の重要な要素です。
ハッシュアルゴリズムの歴史的変遷
第一世代:単純なハッシュ
MD5、SHA-1、SHA-256
❌ Salt なし、速すぎます
1930~1990 年代のデザイン
第2世代:プライベートパスワードハッシュ
bcrypt(1999)、PBKDF2(2000)
✅ Salt 対応、Cost 調整可能
ただし ASIC で高速化できます
第3世代:メモリハードバインディング
scrypt(2009)、Argon2(2015)
✅ 大量のメモリが必要
GPU/ASIC 耐性が最も高い
未来:量子セキュリティ
調査段階
🔬 量子コンピューター攻撃への耐性