Password Hash generation/verification engine

Password Hash Generator & Verifier パスワードハッシュ生成・検証ツール

bcrypt、Argon2id、PBKDF2 などのパスワードハッシュをすばやく生成・検証できます。Salt の自動生成、Cost 設定、性能ベンチマーク、アルゴリズム比較に対応し、開発者やセキュリティ学習者向けに設計されています。

パスワード入力

アルゴリズム

bcrypt

推奨

Argon2id

最も推奨

PBKDF2

利用可能

SHA-256

⚠️ 教育

コスト係数/反復回数 10(推奨)
4 6 8 10 12 14
🚀 より高速 ✅ 推奨 🔒 より安全
Salt

長さ:0 bytes

検証

結果を生成

ハッシュ
--

ベンチマーク — ブラウザー性能

bcrypt Cost 10--
Argon2id(64MB)--
PBKDF2(600k)--

⚠️ これはブラウザ上の性能テストです。実際のサーバー処理はより高速です(約 5~20 倍)

アルゴリズム比較

アルゴリズムセキュリティ速度推奨事項
SHA-256⭐⭐⭐⭐⭐❌ パスワードの保存は推奨されません
PBKDF2⭐⭐⭐⭐⭐⭐⚠️ 利用可能(高い反復回数を推奨)
bcrypt⭐⭐⭐⭐⭐⭐✅ 推奨
Argon2id⭐⭐⭐⭐⭐🏆 最もおすすめ

セキュリティ評価では、総当たり耐性、ASIC/GPU への耐性、設計の成熟度などを考慮します。

よくある質問(FAQ)

Password Hash は通常の Hash と何が違いますか?
一般的な Hash(MD5、SHA-256 など)はデータ完全性の検証を目的としており、非常に高速に計算できます。一方、Password Hash(bcrypt、Argon2id など)はパスワード保存向けに設計され、次の特徴があります:

意図的に低速: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(ソルト値)は、ハッシュ計算前にパスワードへ連結するランダムデータです。主な役割は次のとおりです。

レインボーテーブル対策ウォッチ: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 はどう使い分ければよいですか?
Argon2id(最も推奨):2015 年の Password Hashing Competition の優勝方式で、GPU や ASIC に対する耐性を重視した現代的な設計です。memory と iteration parameter は環境に合わせて調整する必要があります。

bcrypt(広く推奨):1999 年に設計され、成熟して安定しており、幅広くサポートされています。Salt と Cost の仕組みを内蔵し、多くのフレームワークで標準的な選択肢になっています。

PBKDF2(利用可):FIPS 認定の標準方式で、iteration 数によって強度を調整します。GPU/ASIC に弱いため、非常に多い iteration(数十万回)が必要です。

SHA-256(学習用途のみ):パスワード保存には推奨されません。Salt がなく処理が速すぎるため、GPU による総当たり攻撃を受けやすいためです。

提案:新規プロジェクトでは Argon2id、既存プロジェクトでは bcrypt を維持する構成が一般的で、どちらも PBKDF2 より強力な選択肢です。
Cost Factor とは何ですか?
Cost Factor は password hash の計算負荷を調整する値です。bcrypt を例にすると Cost 10 は 2¹⁰ = 1024 回の反復を意味し、Cost を 1 増やすごとに計算時間はおおむね 2 倍になります。

• 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 のですか?
パスワードを SHA-256(または MD5)で直接保存する主な問題は次のとおりです。

速すぎる: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 耐性が最も高い

未来:量子セキュリティ

調査段階
🔬 量子コンピューター攻撃への耐性