## Introduction to key derivation functions

Asymmetric cryptography algorithms define the nature of their keys and how the keys should be generated because the keys need to be related. For example, the RSA key generation algorithm is deterministic.

Symmetric cryptography algorithms only define key sizes. It's up to us to generate the keys. There are various algorithms to generate these keys. One such algorithm is KDF.

A **key derivation function** (**KDF**) is a deterministic algorithm to derive a symmetric key from some secret value (such as master key, password, or passphrase). There are various types of KDFs, such as bcrypt, crypt, PBKDF2, scrypt, HKDF, and so on. You can learn more about KDFs at https://en.wikipedia.org/wiki/Key_derivation_function.

### Note

To generate multiple keys from a single secret value, you can concatenate a number and increment it.

A password-based key derivation function takes a password and generates a symmetric key. Due to the fact that users usually use weak passwords, password...