Crypto Tools
PBKDF2 密钥派生
基于密码的密钥派生函数,支持自定义盐值与迭代次数,本地计算不上传任何数据
关于 PBKDF2
PBKDF2(Password-Based Key Derivation Function 2)是一种基于密码的密钥派生函数, 由 RSA 实验室于 2000 年在 PKCS#5 v2.0 中发布,后被 IETF 收录为 RFC 2898/RFC 8018。 它通过将原始密码与随机盐值反复进行哈希运算(伪随机函数,通常为 HMAC-SHA1 或 HMAC-SHA256), 产生固定长度的派生密钥(DK)。
与直接使用哈希函数存储密码不同,PBKDF2 通过可调节的迭代次数刻意增加计算开销, 使暴力破解和字典攻击的成本大幅上升。迭代次数越高,安全性越强,但计算时间也越长。 NIST 目前建议最低迭代次数为 600,000(HMAC-SHA256)或 1,300,000(HMAC-SHA1)。
盐值(Salt)的作用
盐值是一段随机数据,在派生之前与密码混合,目的是确保即使两个用户使用相同的密码, 其派生结果也完全不同,从而防御预计算的彩虹表攻击。盐值无需保密,通常与派生结果一同存储。 推荐使用至少 16 字节(128 bit)的随机盐值。
密钥长度(Key Size)
派生密钥的长度决定了输出的位数。128 bit 输出为 32 个十六进制字符, 256 bit 为 64 个,512 bit 为 128 个,1024 bit 为 256 个。 根据实际使用场景(AES-128、AES-256 等)选择合适的长度。
使用场景
PBKDF2 广泛用于:密码存储(服务端对用户密码进行 PBKDF2 派生后存储派生值而非明文)、 磁盘加密(macOS FileVault、iOS 数据保护、Wi-Fi WPA2 密钥派生)、 以及基于密码的对称加密密钥生成场景。