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?
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It only takes a minute to sign up.
Sign up to join this communityI 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?
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.