レインボーテーブル
上記のチェインを作成する際に問題となるのが、ハッシュ値および平文の衝突である。上記の方法では、例えば平文 Pi と Pj+1 とがたまたま同じ平文になってしまった場合、以降のチェインの内容 Ci, Pi+1, ... と Cj+1, Pj+2, ... は全て同じ値になってしまう。その結果、テーブルに格納されているペアの実質的な個数が少なくなってしまう。つまり、衝突が起こらなかったテーブルを使用する場合と比べて、平文を得る確率が低くなってしまう。
レインボーテーブルでは、この問題をできる限り回避するため、還元関数を R1, R2, ..., Rm と変化させて、チェインの長さと同じ個数だけ用意しておく。これによって、チェインの長さを m とすると、衝突の発生確率を通常のチェインと比較して 1⁄m-1 にすることができる。
レインボーテーブル (rainbow table) は、ハッシュから平文を得るために使われるテクニックの一つである。特殊なテーブルを使用して表引きを行うことで、時間と空間のトレードオフを実現している。
以降では、このテクニックの元となっているアイディアについて説明する。