type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 28, 2023 10:42 AM
Parent item
领域
PBKDF2(Password-Based Key Derivation Function)是一个用来导出密钥的函数。其基本原理是通过一个伪随机函数(例如函数),把明文和一个盐值作为输入参数,然后重复进行运算,并最终产生密钥。如果重复的次数足够大,破解的成本就会变得很高,而盐值的添加也会增加“彩虹表”攻击的难度。
PBKDF2的算法流程如下:
- 定义DK表示最后产生的密钥,DK的值由一个以上的块拼接而成。 ,的数量是的值,其中DK的长度是,是的长度。就是说如果PRF输出的结果比期望得到的密钥长度要短,则要通过拼接多个结果以满足密钥的长度:
- 通过函数计算每个块的值。
- 选取一个伪随机函数,例如函数,它会输出长度为的结果。
- 根据输入的密码和盐值,把盐值拼接上块索引,通过PRF函数计算:,其中表示32位有符号大端字节序的整形数据。
- 对于得到的结果,再次作为PRF函数的输入,迭代计算:,一共迭代次:。注意迭代的次数为输入参数。
- 将进行异或计算得到一个新的数字串= ^ ^ ... ^ ,作为第个块的值。
函数的流程如下图所示:
- 将拼接为最终秘钥:。