ハッシュ関数とは
ハッシュ関数は、任意長の入力データから固定長のハッシュ値(ダイジェスト)を生成する一方向関数です。 同じ入力には常に同じハッシュ値が生成され、わずかな入力の違いでも全く異なるハッシュ値になります。 元のデータからハッシュ値を求めることは容易ですが、ハッシュ値から元のデータを復元することは計算上不可能です。
MD5・SHA-1・SHA-256・SHA-512の違い
MD5は128ビットのハッシュ値を生成しますが、衝突攻撃が発見されており暗号用途には推奨されません。 ファイルの整合性チェックなど非暗号用途では現在も広く使用されています。
SHA-1は160ビットのハッシュ値を生成しますが、2017年にGoogleがSHAttered攻撃で実用的な衝突を示し、 セキュリティ目的での使用は非推奨となっています。
SHA-256はSHA-2ファミリの一つで、256ビットのハッシュ値を生成します。 現在最も広く使用されており、SSL/TLS証明書、ブロックチェーン、デジタル署名など多くの場面で標準採用されています。
SHA-512は512ビットのハッシュ値を生成し、SHA-256よりも長いダイジェストを提供します。 64ビットプロセッサでの処理効率が高く、より高いセキュリティマージンを持ちます。
HMACとは
HMAC(Hash-based Message Authentication Code)は、ハッシュ関数と秘密鍵を組み合わせた メッセージ認証コードです。データの完全性と送信元の認証を同時に行えます。 RFC 2104で定義され、APIの認証やデータの改ざん検知に広く使用されています。
用途
- ファイル整合性検証: ダウンロードしたファイルが改ざんされていないか確認
- パスワード保存: パスワードをハッシュ化して安全に保存(ソルト付き推奨)
- デジタル署名: 文書やソフトウェアの真正性を証明
- API認証: HMACを使用したリクエストの署名検証
セキュリティに関する注意
MD5とSHA-1は暗号学的に脆弱であることが知られており、セキュリティが重要な用途にはSHA-256以上の使用を推奨します。 パスワードの保存にはbcrypt、Argon2、scryptなどの専用ハッシュ関数の使用が推奨されます。 本ツールはブラウザ内で完結し、入力データはサーバーに送信されません。