Мы можем записать PBKDF как DK = PBKDF2(PRF, Password, Salt, c, dkLen)
PRF
- псевдослучайная функция с выходной длиной hlen
dkLen
- желаемая длина в битах производногоключ - 'c' - это число итераций
как рассчитывается;
DK = T1 ‖ T2 ‖ ... ‖ T_{dklen/hlen}
где Ti = F(Password, Salt, c, i)
и каждая имеет hlen
размеры.
F(Password, Salt, c, i) = U1 ⊕ U2 ⊕ ... ⊕ Uc
и
U1 = PRF(Password, Salt + INT_32_BE(i))
U2 = PRF(Password, U1)
...
Uc = PRF(Password, Uc-1)
Значение dklen
может быть не более чем в 2 ^ 32 - 1 раз больше выходного значения внутреннего хеш-кода (PRF).
Как видите, с небольшой модификацией соли с 32-битным кодированным значением i
PBKDF2 может выводить несколько hlen
выходов.