前回の記事で触れたレインボーテーブルを理解するため実際に作ってみた。 (おさらい) レインボーテーブルとは、ハッシュ値から平文を得るための逆引き表を実現する特殊な表のこと。 攻撃対象となるパスワードが取り得る全文字種・全桁数の総当たり攻撃のハッシュ値表をあらかじめ作って持っておけば、わざわざ総当たり攻撃をし直さなくてもハッシュ値から平文を引き出すことができる。 しかし、「攻撃対象となるパスワードが取り得る全文字種・全桁数の総当たり攻撃のハッシュ値表」をまんま作ろうとするととてつもないサイズの表になってしまい、通常扱えるようなものではなくなってしまう。 パスワードの範囲が「英大小文字+数字+記号(asciiコード印字可能文字)94通りの8桁」だとすると、 これの全ての組み合わせのハッシュ値を全部取得して表にすると、そのサイズは 94^8=6095689385410816*32=1950620