Coding Horror: Rainbow Hash Cracking
codinghorror.com
codinghorror.com
I've used this technique to store sensitive personal data which must be recoverable (i.e. credit card numbers.) When a new number is obtained, a few bytes of salt are randomly generated. The data, plus the salt, are passed to a symetric cipher, and the ciphertext and salt are stored in a database.
[edit: there's some discussion of this in the article comments.]
How quick would this do SHA-1?
And SHA-2, forget about it. Secret salt or not, you're not going to crack any of those variants anytime in the next several years. Rainbow tables would be impossibly large and hash collisions are next to impossible. That is unless you have access to some super-secret multi-bit quantum computer or something..