Algorithims that produce a hash using a private key and some stored random “salt”
Improves the security of hashes because pre computed rainbow tables can’t be used. However the effectiveness is arguably becoming less over time as new rainbow tables can be computed faster using FPGA’s and salting.
On systems at any risk of hacking you should be storing a “Salted Hash” of a users password, not the actual password. It should be impossible for you to tell a user what their password actually is from the information you store – that is what a slated hash does.
Dealing with mistyped passwords
Some sites apparently store a few salted hashes of user entered passwords at the time of generating the salted hash, with common miss-typed versions of what was entered. They then validate the hash of a user entered password in the future against them all. Quite a nice trick!
Algorithims (e.g. MD5) that produce a hash using a private key that can then be verified using a public key.