If you have the salt you can use a rainbow table to figure out the hash.
No you can't. 1-8character alphanumeric SHA1 rainbow table takes up 160GB. Add even 12bit salt and that becomes 640TB. You know what used a 12bit salt, legacy unix systems. Modern salts are effectively immune to rainbow tables. I'd wager the salt has more entropy then most peoples passwords.
I design software that stores password hashes. It uses the same cryptographic hash functions to store passwords (SHA1 probably).
SHA1 is unsuitable for storing passwords, use bcrypt. SHA1 is designed to be a fast algorithm and is vulnerable to moore's law. Fast hashing algorithms are a weakness for password databases because it makes bruteforce cracking faster. A modern laptop can churn out more then 100k sha1 hashes per a second. Bcrypt is designed with a cost parameter that you can tweak how difficult the hash operation is. As computers get faster, you raise the cost and then the next time person logs in you store the more secure hash.
Just because you're writing security software doesn't mean you're doing it right. I refer you to Schneier's Law:
Anyone, from the most clueless amateur to the best cryptographer, can create an algorithm that he himself can't break.