密码学中的密钥通常使用固定长度的二进制串,而对于人类来说,可变长度的字符串更适合作为密码来记忆。KDF用于从密码派生密钥,也就是定长的二进制串。

一个简单的KDF可以使用哈希函数,比如SHA256。但是这是不安全的,容易遭受字典攻击。

安全的KDF需要使用salt、以及key stretching,也就是进行多轮迭代,让计算消耗更多资源,以增大暴力破解的成本。

业界广泛使用的KDF包括PBKDF2, Bcrypt,Scrypt,Argon2