It's pretty simple to protect against that on most implementations. Since you mentioned it, let's take Windows as an example.
To protect against rainbow tables on Windows, all we need to do is generate a 16-byte salt at the time of creation of the password and prepend it to the password pre-hashing. Then we store the salt in plaintext right next to the hashed password. Suddenly, a rainbow table is useless unless you happen to have a pre-generated rainbow table for that particular salt (note that you'd have to generate 2^127 times as many rainbow tables for a 50% chance of having a table with that salt).
Not that this protects against any other attacks, but it certainly does mitigate the rainbow table threat.
Apple isn't a computer company anymore, and since when did everyone's purchasing habits depend on you?
As with most people on
Also, I fail to see any major players with clean hands. They're all parent whores and extortionists.
The key is to figure out how to do it so as to annoy the fewest people.
All great discoveries are made by mistake. -- Young