同じアルゴリズムでも、入力が少し違うだけで…
hello world
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Hello world
4ae7c3b6ac0beff671efa8cf57386151c06e58ca53a78d83f36107316cec125f
大文字を1つ変えただけでハッシュが完全に別物になります。これが *アバランシェ効果* で、ハッシュが変更検出に使える理由です。
MD5・SHA-1・SHA-256・SHA-384・SHA-512 ハッシュを一瞬で生成。
最終更新
—————ハッシュ生成ツールは、入力データから *ハッシュ値* と呼ばれる短い固定長の指紋を計算するものです。1文字違うだけで結果がガラリと変わるため、ファイルが壊れていないかの確認、長い値同士を丸ごと比較せずに一致を判定する用途、コンテンツアドレッシング(Git は SHA-1 / SHA-256 を使っています)、さらには各種セキュリティプロトコルの部品として広く使われています。
良い暗号学的ハッシュ関数には3つの性質があります。*決定的*(同じ入力 → 同じハッシュ)、*一方向性*(ハッシュから元の入力を復元できない)、*衝突困難性*(同じハッシュを持つ2つの入力を見つけるのが現実的に不可能)の3つです。SHA-256 や SHA-512 はこの3条件をすべて満たしますが、MD5 や SHA-1 はすでに *破られて* いるため、セキュリティ目的の比較には使ってはいけません。
ハッシュは *暗号化ではありません*。暗号化は鍵があれば元に戻せますが、ハッシュは設計上一方向です。また、パスワード保管の仕組みでも *ありません* ── パスワードには bcrypt・scrypt・Argon2 のような *パスワードハッシュ* を使う必要があります。これらは総当たり攻撃をわざと重くするように作られています。
文字列、JSON の一部、ライセンスキーなど、好きなテキストを貼り付けます。入力するそばからハッシュが更新されます。
MD5・SHA-1・SHA-256・SHA-384・SHA-512 から選択します。汎用のチェックサム用途なら、まずは SHA-256 を選んでおけば安全です。
ハッシュは小文字の16進数で表示されます。大文字に切り替えたり、クリップボードにコピーしたりできます。
ダウンロードページや Git コミット、チェックサムファイルから既知のハッシュを貼り付ければ、自分の値と一致するかをツールが教えてくれます。
よく目にするアルゴリズムと、その出力サイズ・現在の安全性の状況をまとめました。SHA-1 は RFC 3174 で、SHA-2 ファミリは NIST FIPS 180-4 で規定されています。
| アルゴリズム | 出力サイズ | 現状 / 主な利用シーン |
|---|---|---|
| MD5 | 128ビット / 16進32文字 | 破られている — セキュリティ目的以外のチェックサム限定 |
| SHA-1 | 160ビット / 16進40文字 | 破られている — Git の履歴やレガシー系のみ |
| SHA-256 | 256ビット / 16進64文字 | 標準 — TLS、現代の Git、ブロックチェーン |
| SHA-384 | 384ビット / 16進96文字 | SHA-2 系を使う TLS スイートで採用 |
| SHA-512 | 512ビット / 16進128文字 | 強力 — 64ビット環境では SHA-256 より速いことも |
| bcrypt / scrypt / Argon2 | 可変 | *パスワード用* ハッシュ — パスワードにはこちらを。SHA-x ではダメ |
hello world
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Hello world
4ae7c3b6ac0beff671efa8cf57386151c06e58ca53a78d83f36107316cec125f
大文字を1つ変えただけでハッシュが完全に別物になります。これが *アバランシェ効果* で、ハッシュが変更検出に使える理由です。
SHA256: 3a7bd3e2360a3d290dd0b1aef6a04e9b… ubuntu.isoダウンロードしたファイルの SHA-256 を計算し、配布元が公開している値と比較します。一致すれば、転送中の破損も改ざんもなかったということです。
OS イメージ、言語ランタイム、署名付きリリースなどでは、ファイルの隣に SHA-256 が公開されているのが普通です。インストール前に必ず照合しましょう。
user@example.com
b58996c504c5638798eb6b511e6f49af
Gravatar はアバターキーとして MD5(email) を使っています。秘密ではない識別子なので MD5 で十分ですが、衝突や原像攻撃が問題になる場面では絶対に使わないでください。
== で比較してしまう。比較前に空白をトリムし、大文字小文字を揃えましょう。