Wikipedia article is a little hard to understand. In a nutshell, you can imagine the Rainbow table as a large dictionary with pre-calculated hashes and passwords from which they were calculated.
The difference between Rainbow tables and other dictionaries simply lies in the way records are stored. The Rainbow table is optimized for hashes and passwords and, thus, provides greater optimization of the space, while maintaining a good search speed. But essentially, it's just a dictionary.
When an attacker steals a long list of password hashes from you, he can quickly check if any of them are in the Rainbow table. For those that are, the Rainbow table will also contain the row from which they were hashed.
Of course, there are too many hashes to store them all in the Rainbow table. Therefore, if the hash is not in a specific table, the hacker is out of luck. But if your users use simple English words, and you hashed them only once, there is a high probability that a good rainbow table will contain a password.
Vilx- Jun 18 '09 at 14:02 2009-06-18 14:02
source share