Bonesnap wrote:Admittedly my knowledge of this sort of stuff is rudimentary. From what I have read, they are mostly considered insecure due to their speed, and due to their "small" hash size so they are more vulnerable to collisions than other algorithms. Just seems like everything I read on this subject is saying to stay away from MD5 and SHA-1.
Yeah, for the purposes of password hashing, they are insecure due to their speed. It is true that they are more vulnerable to collisions than other algorithms on the basis on hash size alone, but collision attacks aren't really relevant to password hashing, and MD5 is broken for collision attacks anyway. Yes, stay away from MD5 and SHA-1, and if you must use them, use them with key stretching. I'd say the same rule of thumb applies to the SHA-2 family of hash functions too since they are also supposed to be quite fast.
Bonesnap wrote:Also, collision attacks can still work with salts, they're just incredibly rare.
Well, a collision is very rare in the first place. I think it is more likely that the attacker will get the actual password used from the preimage attack, upon which the salt won't help if the user really did reuse passwords. That said, my use of "collision" is inaccurate since the attacker doesn't know the actual password; it is more like a successful preimage attack that gives the attacker a different preimage, which then can be used as if it were the actual password, if there is no salt.