要点:ハッシュはテキストから計算される固定長のフィンガープリントです。同じ入力は常に同じハッシュになりますが、1文字変えるだけでまったく別のハッシュになります。これこそ、テキストやファイルが変わったかどうかを見分けるのにハッシュが役立つ理由です。本ガイドでは、ハッシュとは何か、どのアルゴリズムを選ぶか(MD5・SHA-1・SHA-256・SHA-512)、実務での整合性確認、そして決して無視できない安全上の限界を説明します。
ハッシュ化は、任意の長さのテキスト——1語でも、1段落でも、文書全体でも——を短い16進文字列に変換します。計算は決定論的なので、2回実行して比較できます。ハッシュが同一なら入力はバイト単位で同一、異なれば何かが変わった証拠です。画面上で同じに見えても関係ありません。

ハッシュとは正確には何か
暗号学的ハッシュ関数には、日々の作業で重要な3つの性質があります。決定論的であること——同じ入力は常に同じ出力を返します。固定長であること——3語でも3メガバイトでも、ダイジェストの大きさは同じです。そして雪崩効果があること——1文字、たとえ末尾の空白1つでも変えると出力ビットの約半分が反転し、新しいハッシュは元とは無関係に見えます。
この最後の性質こそ、ハッシュを信頼できる「変更検知器」にします。長い2段落を目視で同一と確信するのは無理でも、64文字のハッシュ2つの比較は一瞬です。
どのアルゴリズムを使うべきか
一般的なアルゴリズムは、主にダイジェスト長と、まだ安全と見なせるかどうかで異なります。
- MD5——128ビットのダイジェスト、16進32文字。高速ですが暗号学的に破られています(実用的な衝突が存在)。重複排除など非セキュリティ用途には可、セキュリティには決して使わないこと。
- SHA-1——160ビット、40文字。これも衝突攻撃で破られ、各所で廃止が進んでいます。
- SHA-256——256ビット、64文字。SHA-2ファミリーに属し、整合性確認の妥当な既定値です。
- SHA-512——512ビット、128文字。安全余裕が大きく、余裕を持たせたいときに有用です。
迷ったらSHA-256を選びましょう。広くサポートされ、テキストに対して高速で、意図的な衝突が現実的な懸念にならない程度に堅牢です。
実務でのテキスト整合性の確認方法
手順は単純です。元のテキストをハッシュ生成ツールに貼り付け、SHA-256ダイジェストを控えます。後で——メールやCMSへの貼り付け、アプリ間コピーを経た後で——もう一度計算して比較します。2つのダイジェストが一致すれば変更なし、異なれば目に見えない変更が紛れ込んでいます。置き換わったスマートクォート、消えた改行、末尾の空白などです。
これは目視確認より信頼できます。書式を壊すものは、たいてい目に見えないからです。
ハッシュにできないこと
ハッシュ化は暗号化ではありません。ハッシュは一方向です。SHA-256ダイジェストから元のテキストに戻すことはできません。つまりハッシュ化は内容を隠しも守りもせず、変更を検知するだけです。ほかに2つの限界も明確に述べておきます。
- パスワードの素のハッシュは安全な保存ではありません。パスワードには低速でソルト付きの関数(bcrypt、scrypt、Argon2)が必要で、単なるMD5やSHA-256ではだめです。
- エンコーディングが重要です。同じ見た目のテキストでも、UTF-8とUTF-16、末尾改行の有無でダイジェストは変わります。同種どうしを比較してください。
ダウンロードしたファイルの検証
現実で最も多い用途は、ダウンロードが無傷で届いたかの確認です。提供元がインストーラーのSHA-256を公開し、受け取ったファイルのチェックサムを計算して比較します。一致すれば、バイト列は配布物と同一です。不一致はほぼ常に破損か不完全なダウンロード——まれに改ざんを意味します。ローカルファイルにはファイルチェックサム検証ツールを使ってください。ブラウザ内でファイルを読み取り、アップロードは一切しません。
避けたいよくある間違い
- セキュリティ用途にMD5やSHA-1を使う——代わりにSHA-256を使う。
- ハッシュ化を暗号化と混同し、ハッシュを「復号」しようとする。
- 異なるエンコーディングや余分な空白から生成したハッシュを比較する。
- 専用関数の代わりにパスワードの素のハッシュを保存する。
正しく使えば、ハッシュは最も手軽な整合性チェックの一つです。貼り付けて比較すれば、2つのバージョンが一致するか確実にわかります。推測は不要で、何一つブラウザの外へ出ません。