ハッシュ雪崩効果:1ビットで全部変わる

入力をたった1ビット変えるだけで、出力ハッシュの約半分のビットが反転します。変化したビットを赤く点灯させ、一方向性と改ざん検知を体感します。

入力A(元のメッセージ)
入力B(変えたメッセージ)
6 回
入力の違い
反転した出力ビット
反転率(雪崩の強さ)
理想値
50%
トイハッシュ出力(48ビット = 12桁の16進)。赤は A と B で違う桁。
A
B
出力 48 ビット(赤=反転したビット)
ラウンドごとの拡散(行=ラウンド、赤=A と B で違うビット)
ハッシュ関数は、どんな長さの入力でも固定長の「指紋」に変換する一方向の関数です。良いハッシュは 雪崩効果(avalanche effect)を持ちます ── 入力をたった1ビット変えただけで、 出力ビットの約半分(50%)がランダムに反転するという性質です。
だから出力を見ても元の入力は推測できず(一方向性)、メッセージを1文字でも改ざんすると指紋が激変するので 改ざん検知に使えます。
ここでは本物の SHA ではなく、拡散の過程を1ラウンドずつ追える自作のトイハッシュで雪崩を観察します。 ラウンド数を 0 にすると拡散が起きず違いが広がらないこと、増やすと一気に 50% へ近づくことを確かめましょう。

いま何が起きている?

ここがポイント