ハッシュ関数とダイジェストのしくみ
このジェネレーターの役割
ハッシュ関数は、入力した任意のテキストを固定長の16進数文字列(ダイジェストと呼ばれます)に変換します。このツールはMD5・SHA-1・SHA-256・SHA-512という代表的な4つのアルゴリズムを同時に実行し、テキストを編集した瞬間に各ダイジェストが更新されます。出力の長さはアルゴリズムごとに異なり、MD5は32文字、SHA-1は40文字、SHA-256は64文字、SHA-512は128文字の16進数になります。
ハッシュは設計上、一方向です。同じ入力からは必ず同じダイジェストが得られますが、ダイジェストから元のテキストを復元する手段はありません。1文字変えるだけで出力全体が別物になり、この性質こそが差分の検出にハッシュが役立つ理由です。
こんなときに使う
もっとも身近な用途は、ファイルやメッセージが壊れずに届いたかを確かめることです。配布ページはリリースのSHA-256を掲載していることが多く、受け取ったファイルのハッシュを計算して2つのダイジェストを見比べれば、転送中に破損や差し替えが起きていないかを確認できます。比較欄に基準となるダイジェストを貼り付ければ、一致するかどうかが一目で分かります。
開発の現場では、重複排除のための手軽なフィンガープリント生成、ハッシュ値の保存方法の検証、同じ入力に対する各アルゴリズムの挙動の確認などにも使われます。
例:短い文字列をハッシュ化する
hello という語を入力すると、SHA-256 は 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 という64文字の16進数を常に返します。同じ語のMD5はずっと短く、5d41402abc4b2a76b9719d911017c592 です。空白を1つ加えたりHを大文字にしたりするだけで、2つのダイジェストは元の面影をまったく残さず変化します。このなだれ効果(アバランシェ効果)があるからこそ、ハッシュは信頼できる整合性チェックになります。
注意点とエッジケース
どのアルゴリズムもあらゆる用途に向くわけではありません。MD5とSHA-1は高速ですが暗号学的には破られており、実用的な衝突攻撃が存在するため、チェックサムや重複検出に留め、セキュリティ用途には決して使わないでください。SHA-256はデジタル署名やブロックチェーンで現在の標準的な選択肢であり、SHA-512は高セキュリティ用途や長期利用により大きな余裕を与えます。
パスワードの保存にも、ハッシュ単体は適していません。パスワードを素のSHA-256にしただけでは事前計算済みのテーブルで破られてしまうため、実運用ではbcrypt・scrypt・Argon2のように意図的に低速なアルゴリズムを一意のソルトと組み合わせて使います。このツールはダイジェストの生成と照合に使うものであり、パスワードの保管庫ではないと考えてください。