# PBKDF2 uses HMAC-SHA1 to generate keys, but what is the key for the HMAC?

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?

-
If unsure, read the specifications! – Maarten Bodewes Sep 4 '13 at 7:50

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.

-