I was reading up on PBKDF2 and noted the following:

DK = PBKDF2(PRF, Password, Salt, c, dkLen)

PRF is a keyed HMAC, but I can't seem to find out what they use as key for the HMAC?

  • 1
    $\begingroup$ If unsure, read the specifications! $\endgroup$
    – Maarten Bodewes
    Commented Sep 4, 2013 at 7:50

2 Answers 2


PBKDF2 uses the password as the PRF key.

From the RFC:

The first argument to the pseudorandom function PRF serves as HMAC's "key," and the second serves as HMAC's "text." In the case of PBKDF2, the "key" is thus the password and the "text" is the salt.


The password is used as the key, the salt + (current block iteration as a 32-bit integer) is used as the message, then the resultant HMAC is used as the message for the next iteration.

All iterations are XORd with eachother to generate the hash block. If the required output length is less than the size of the hash, it is truncated, if it is larger, the process is repeated with new block iterations until the desired length is reached.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.