Algorithims that produce a hash using a private key and some stored random “salt”
Salting
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.
Storing Passwords
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!
Hash Signatures
Algorithims (e.g. SHA256) that produce a hash using a private key that can then be verified using a public key.
What to use (updated 2024-10): SHA2/SHA3/BLAKE2/BLAKE3 are all good. Don’t use sha1/md5 as they are no longer cryptographically secure or xxhash/crc32 as they are not intended to be cryptographically secure.