1、pbk df2pbk df2(password-basedkeyderivationfunction )是用于导出密钥的函数,常用于生成加密密码。
其基本原理是,例如通过HMAC函数等伪随机函数,将结实的橘子和盐的值作为输入参数,重复运算,最终生成密钥。
如果重复次数足够大,解密的成本就会很高。 盐的添加会增加“彩虹表”攻击的难度。
2、PBKDF2函数的定义dk=pbkdf2(PRF、Password、Salt、c、dkLen ) ) PRF是伪随机函数,例如HASH_HMAC函数,其输出长度为hLen的结果。 Password是用于生成密钥的原文密码。 Salt是用于加密的盐的值。 c是进行重复计算的次数。 dkLen是期望的密钥长度。 DK是最后生成的密钥。 3、PBKDF2的算法流程DK的值是将多个块连接起来的。 块数为dkLen/hLen的值。 这意味着,如果PRF输出的结果短于预期的密钥长度,则必须将多个结果连接起来以满足密钥长度。
dk=T1|||T2|.|tdklen/hlen,每个块都是通过函数f获得的。
在ti=f(password,Salt,c,I )函数f中,PRF进行c次运算,对得到的结果进行异或运算,得到最终的值。
f(Password,Salt,c,I )=U1 ^ U2 ^ . ^ Uc首次,PRF将password计算为key,Salt拼接编码为大字节序的32位整数的I作为盐值。
u1=PRF(password,Salt || INT_32_BE(i ) I ) ) ) )和后续的c-1次将上次得到的结果作为盐值使用。
u2=PRF(password,U1 )u2=PRF(password,Uc-1 )函数f的大致流程图如下。