💨
ハッシュアルゴリズムまとめ
1. MD5
- 特徴: 128bit のハッシュ値を出す。昔はパスワード保存やチェックサムで広く使われた。
- 利点: 計算が非常に速い。実装が豊富。
- 欠点: 衝突が容易に作れる(セキュリティ用途には危険)。
- 用途: 今は セキュリティではNG。ファイル整合性確認など「改ざん検出が厳密でなくても良い」用途に限定。
2. SHA(Secure Hash Algorithm)
- 種類: SHA-1, SHA-2(SHA-256, SHA-512 など)、SHA-3。
- 特徴: MD5より安全。SHA-1は既に衝突実証済み。現在は SHA-2 or SHA-3 が主流。
- 利点: 衝突耐性が比較的強い。広く標準化されている。
- 用途: 電子署名、TLS証明書、ブロックチェーンなど。
3. bcrypt
-
特徴: パスワードハッシュ専用アルゴリズム。内部で Blowfish を利用。
-
強み:
- 「ストレッチング」機能があり、計算を意図的に遅くできる。
- ソルトを自動生成して含めてくれる。
-
用途: ユーザーパスワード保存の定番。Laravel や Rails にも標準対応。
4. scrypt
- 特徴: bcryptの後発。さらに「メモリを大量に使う」仕組みを導入。
- 強み: GPU や ASIC などによる総当たり攻撃を難しくする。
- 用途: 高セキュリティなパスワード保存、暗号通貨(Litecoin など)でも利用。
ざっくり用途別まとめ
- 改ざん検知 / チェックサム → MD5(セキュリティを気にしないなら)、SHA-256
- 証明書・署名 / 暗号基盤 → SHA-256 / SHA-3
- パスワード保存 → bcrypt(標準)、scrypt(さらに強固)、近年は Argon2 も主流化
- 避けるべきもの → MD5, SHA-1(セキュリティには弱い)
Discussion