Hacker News new | ask | show | jobs
by Lvl999Noob 497 days ago
Can someone explain, in clear layman terms, what the difference is between a password hash and a KDF? I have went through this whole thread and tried to look around online but I still don't understand.
2 comments

Password hash is designed for matching: take the salt, add it to the password, run it through the hash, compare it to the stored hash. The important properties are:

- MUST be non-reversible, including against tricks like "rainbow tables"

- should be somewhat expensive to discourage just trying all possible passwords against a (leaked) hash

KDF is a key derivation function. The value will be used as a key in, say, AES. The important properties are:

- should distribute entropy as well as possible, across the required width of output bits

- reversibility less important as the derived key shouldn't be stored anywhere

- may or may not want artificially inflated cost to discourage cracking

I still have no idea now haha. Your answer and Fabbari's are total opposites. If I am understanding right, you are saying that Password Hash is how a password should be stored while a KDF is not meant for storing passwords. Fabbari is saying the opposite of this, that KDF should be used for storing passwords while password hashes should not.
Further discussion upthread under https://news.ycombinator.com/item?id=42957300
A password hash is a simple hash of a password. Hash algorithms are made to be fast. KDF - key deriving functions - are slow by design and are made to derive a key from a given string. They are designed to be slow to make password searching slower. This is a 2c tour of the topic.
There are 2 comments to OP, and now the person can wonder which one is supposed to be slow or not.