A Key derivation function is a cryptographic hash function which is designed to make a small key or password harder to attack using a dictionary attack or brute force attack.
It is normally expressed as where is the derived key, is the original key, is a large random number (typically around ) which acts as cryptographic salt, and refers to the number of iterations of a sub-function (typically 1000). The derived key instead of the original key as the key to the system.
The values of the salt and the number of iterations can then be stored.
When we have a large number of iterations it is practical time-wise for to be computed for a single password, but not for a large number of passwords as a brute force attack would require. The use of salt prevents the attackers from precomputing a dictionary of derived keys.