MD5、SHA-256 などのハッシュを生成する方法

· 4 分で読めます

ハッシュは任意の入力 — パスワード、ファイル、メッセージ — を固定長の文字列に変換します。同じ入力からは常に同じハッシュが生成されますが、入力をわずかに変えるだけで全く異なるハッシュが得られます。これにより、ハッシュは整合性検証、パスワード保存、デジタル署名に欠かせないものになっています。

ハッシュの仕組み

ハッシュ関数は任意のサイズの入力を受け取り、固定サイズの出力を生成します:

入力 SHA-256 ハッシュ(先頭 16 文字)
hello 2cf24dba5fb0a30e...
Hello 185f8db32271fe25...
hello! ce06092fb948d9ff...

1 文字を変える(小文字 h を大文字 H に)だけ、または追加するだけで、ハッシュ全体が変わることに注意してください。これはアバランシェ効果と呼ばれます。

一般的なハッシュアルゴリズム

アルゴリズム 長さ 状態 用途
MD5 32 文字 破られている(安全でない) レガシーチェックサム、非セキュリティ用途
SHA-1 40 文字 破られている(安全でない) レガシーシステムのみ
SHA-256 64 文字 安全 ファイル整合性、デジタル署名
SHA-512 128 文字 安全 高セキュリティアプリケーション

SHA-256 は現在ほとんどの用途で標準です。MD5 と SHA-1 は、それらを要求するレガシーシステムとやり取りする場合のみ使うべきです。

ハッシュを生成する方法

  1. アルゴリズムを選ぶ — MD5、SHA-1、SHA-256、SHA-384、SHA-512 から選択します。特別な理由がなければ SHA-256 を使ってください。
  2. テキストを入力するかファイルをアップロード — テキストを入力するか貼り付けるか、ハッシュ化するファイルを選択します。
  3. ハッシュをコピー — 結果は 16 進文字列で、検証、保存、比較に使用できます。

実用的な使い道

ファイルの整合性検証 — ファイルをダウンロードし、そのハッシュを公式に公開されているハッシュと比較します。一致すれば、ファイルは本物で破損していないことが確認できます。

パスワードの保存 — アプリケーションはパスワードそのものではなく、パスワードのハッシュを保存します。ログイン時、入力されたパスワードがハッシュ化され、保存されたハッシュと比較されます。

データの重複排除 — 大きなファイルをハッシュ化することで、バイト単位で比較せずに同一かどうか素早く判定できます。

API セキュリティの HMAC — HMAC(秘密鍵を使ったハッシュ)で API リクエストに署名し、転送中に改ざんされていないことを保証できます。

ヒント

よくある質問

MD5、SHA-1、SHA-256 の違いは何ですか?

MD5 は 128 ビット(16 進 32 文字)、SHA-1 は 160 ビット(40 文字)、SHA-256 は 256 ビット(64 文字)のハッシュを生成します。MD5 と SHA-1 は暗号学的に破られているとされています。SHA-256 は現在安全で、整合性検証とセキュリティの両方に推奨されています。

ハッシュを逆変換して元のデータに戻せますか?

いいえ。ハッシュ関数は設計上一方向です。ハッシュから入力を数学的に逆算することはできません。ただし、よくあるパスワードは事前計算されたテーブル(レインボーテーブル)で見つかることがあるため、パスワードはハッシュ化前にソルトを加えることが重要です。

HMAC とは何ですか?

HMAC(Hash-based Message Authentication Code)はハッシュ関数と秘密鍵を組み合わせたものです。データの整合性と真正性の両方を検証 — 改ざんされていないこと、および秘密鍵を知る誰かが生成したことを証明します。

データはサーバーに送信されますか?

いいえ。すべてのハッシュ化は Web Crypto API を使ってブラウザ内で実行されます。テキストやファイルがデバイスから出ることはありません。