ハッシュジェネレーター
テキスト入力からMD5、SHA-1、SHA-256、SHA-384、SHA-512ハッシュを生成。
// Using Web Crypto API (SHA-256)async function sha256(text) {const encoder = new TextEncoder();const data = encoder.encode(text);const hash = await crypto.subtle.digest('SHA-256', data);return Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2, '0')).join('');}// Node.jsconst crypto = require('crypto');const hash = crypto.createHash('sha256').update('text').digest('hex');
関連ツール
ハッシュとは?
どんな長さの本でも、同じ長さの「指紋」に変換できる魔法の機械を想像してください。これがまさにハッシュ関数の仕組みです!
ハッシュ関数は任意の入力(テキスト、ファイル、パスワード)を受け取り、ハッシュまたはダイジェストと呼ばれる固定長の文字列に変換します。同じ入力は常に同じハッシュを生成しますが、わずかな変更でも完全に異なる結果になります。
なぜ重要なの?
- パスワードセキュリティ: ウェブサイトは実際のパスワードではなく、ハッシュを保存します
- ファイル検証: ダウンロードしたファイルが改ざんされていないか確認できます
- データ整合性: データが変更されたかどうかを検出できます
主要なハッシュアルゴリズム
| アルゴリズム | 出力長 | セキュリティ | 用途 |
|---|---|---|---|
| MD5 | 128ビット (32文字) | ❌ 破られた | レガシーシステム |
| SHA-1 | 160ビット (40文字) | ❌ 弱い | Git (旧式) |
| SHA-256 | 256ビット (64文字) | ✅ 安全 | Bitcoin、SSL証明書 |
| SHA-512 | 512ビット (128文字) | ✅ 非常に安全 | 高セキュリティ用途 |
| SHA-3 | 可変 | ✅ 最も安全 | 次世代セキュリティ |
経験則: 新しいプロジェクトでは常にSHA-256またはSHA-3を使用してください。MD5とSHA-1は暗号学的に破られています。
実世界の例
🔐 ウェブサイトがパスワードを保存する方法
パスワード「MySecret123」でアカウントを作成すると:
- ウェブサイトがハッシュ化:
MySecret123→a1b2c3d4e5f6... - データベースにはハッシュのみが保存される
- ログイン時、入力がハッシュ化されて比較される
ハッカーがデータベースを盗んでも、実際のパスワードではなくハッシュしか手に入りません!
📦 ダウンロードファイルの検証
ダウンロードページで「SHA-256チェックサム」を見たことがありますか?使い方:
- ファイルをダウンロード
- このツールでハッシュを生成
- 公式チェックサムと比較
- 一致すれば、ファイルは本物で破損していません
良いハッシュ関数の特性
1. 決定論的 同じ入力 → 常に同じ出力
"hello" → 常に "2cf24dba5fb0a30e..."
2. 高速計算 ファイルのハッシュ化は数分ではなくミリ秒で完了すべきです。
3. 一方向性(原像攻撃耐性) ハッシュから元の入力を逆算することはできません。
4. 雪崩効果 わずかな変更で完全に異なるハッシュが生成されます:
"hello" → "2cf24dba5fb0a30e26e83b2ac5b9e29e..."
"hellp" → "7f9351a8b1b6a7d3c4e5f6a7b8c9d0e1..." (完全に違う!)
セキュリティのベストプラクティス
セキュリティ目的でMD5やSHA-1を絶対に使用しないでください! 衝突攻撃に対して脆弱です。
パスワード保存の場合:
- 専用のパスワードハッシュアルゴリズムを使用: bcrypt、Argon2、scrypt
- ブルートフォース攻撃を防ぐため、意図的に低速です
- 各パスワードに固有のソルト(ランダムデータ)を追加
ファイル整合性の場合:
- SHA-256が現在の標準
- 常に公式ソースからハッシュを検証
ハッシュの豆知識
💰 SHA-256があなたのポケットに すべてのBitcoin取引はSHA-256で保護されています。暗号通貨経済全体がこのアルゴリズムの安全性に依存しています。
🔢 SHA-256の可能なハッシュ数 2^256 = 観測可能な宇宙の原子数よりも多い!