MD5・SHA-256・SHA-512ハッシュの生成方法
クイック概要
MD5、SHA-256、SHA-512などハッシュ関数の違いと生成方法を解説します。ハッシュとは何か、MD5が脆弱な理由、チェックサムやパスワード保存での用途別の選び方、Web Crypto APIで安全に生成する手順を紹介するガイドです。
ハッシュ関数は任意長の入力から固定長の出力(ハッシュ値)を生成する一方向関数です。チェックサム検証にはSHA-256またはSHA-512を使用し、MD5とSHA-1はレガシー互換性のためのみに使います。MD5は衝突攻撃が実証済みで、セキュリティ用途には絶対に使用しないでください。
NeatForge ハッシュジェネレーター は、MD5・SHA-1・SHA-256・SHA-384・SHA-512を1クリックで同時生成します。
ハッシュとは?
ハッシュは次の性質を持つ一方向関数です:
- 固定長出力:入力長に関わらず出力は常に同じ長さ(SHA-256なら64文字のhex)。
- 一方向性:ハッシュ値から元の入力を復元できない。
- 雪崩効果:入力の1ビット変更で出力が大きく変化する。
- 決定性:同じ入力は常に同じハッシュを生成する。
暗号化との違い:暗号化は鍵があれば復元可能(双方向)、ハッシュは復元不可(一方向)です。
MD5、SHA-1、SHA-256、SHA-512の違い
- MD5:128 bit出力。セキュリティ用途不可。レガシーチェックサムのみ。
- SHA-1:160 bit出力。セキュリティ用途不可。Git(移行中)。
- SHA-256:256 bit出力。推奨。TLS、ブロックチェーン、チェックサム。
- SHA-512:512 bit出力。推奨。高セキュリティ要件。
用途別の選び方
- チェックサム:SHA-256を推奨。ダウンロードファイルの改ざん検出に使います。
- Gitコンテンツアドレッシング:SHA-1が歴史的に使われています。
- パスワード保存:平文ハッシュではなくbcrypt、scrypt、Argon2などの専用アルゴリズムを使用してください。SHA-256単体は不十分です。
- デジタル署名:SHA-256またはSHA-512を使用します。
MD5が脆弱な理由
MD5は衝突攻撃(同じハッシュ値を持つ異なる入力を生成する攻撃)が実用的な時間で実行可能です。これにより、デジタル署名の偽造や証明書の偽造が可能になるため、セキュリティ用途からは排除されました。レガシーシステムのチェックサム互換性のためのみに残されています。
ハッシュの生成方法
- ハッシュジェネレーター を開きます。
- テキストを入力ボックスに貼り付けます。
- 「ハッシュを計算」をクリックします。
- 5つのハッシュが一度に表示されます。
- 必要なアルゴリズムの横のコピーボタンでコピーします。
入力はUTF-8でエンコードされるため、絵文字や国際文字も正しく処理されます。SHAハッシュはブラウザのネイティブ crypto.subtle.digest で計算され、ハードウェアアクセラレーションが効きます。
FAQ
Q. ファイルのハッシュを計算できますか?
このツールはテキストのみ対応です。ファイルの場合はコマンドラインの shasum -a 256 file などを使用してください。
Q. ハッシュから元のテキストを復元できますか? いいえ。ハッシュは一方向関数であり、復元は数学的に不可能です。
Q. パスワード保存にSHA-256を使ってもいいですか? 推奨されません。SHA-256は高速すぎてブルートフォース攻撃に弱いです。bcrypt、scrypt、Argon2を使ってください。
Q. hex出力の大文字・小文字の違いは何ですか?
同じハッシュ値の表現方法が違うだけです。a3f5...とA3F5...は等価です。ツールチェーンが期待する形式に合わせて選んでください。本ツールは1クリックで切り替えられます。
Q. 同じ入力から常に同じハッシュが生成されますか? はい。ハッシュは決定論的関数であり、同じアルゴリズムに同じ入力を渡せば、環境や時刻に関わらず常に同じ出力になります。これがチェックサム検証の基礎です。
Q. 入力末尾の改行は結果に影響しますか?
はい。改行も入力の一部としてハッシュ化されます。コマンドラインのechoとecho -nで異なるハッシュになるのはこのためです。テキストをそのまま貼り付けてください。