文章内容
2025/9/19 3:11:26,作 者: 黄兵
werkzeug.security 的 enerate_password_hash 介绍
这里有一段密文:
pbkdf2:sha256:600000$5xHxCjtSjgkP73sY$973324bac010ee392f4999151b1426cf83c90bae8b5ba1647d1a7b65d55d9771
这是由 Werkzeug 的 generate_password_hash 生成的哈希密码。我们可以一步步拆解:
1️⃣ 格式
Werkzeug 生成的 PBKDF2 密文格式为:
<method>:<hash_name>:<iterations>$<salt>$<hash>
对照上面的密文:
-
pbkdf2→ 表示使用 PBKDF2 算法(Password-Based Key Derivation Function 2)。 -
sha256→ PBKDF2 的底层哈希函数是 SHA-256。 -
600000→ 迭代次数,也就是 PBKDF2 循环 600,000 次。 -
5xHxCjtSjgkP73sY→ 盐值(salt),随机生成的字符串,用于防止彩虹表攻击。 -
973324bac010ee392f4999151b1426cf83c90bae8b5ba1647d1a7b65d55d9771→ 经过 PBKDF2 和盐值计算出来的 哈希值。
2️⃣ 盐值(salt)
-
盐值是
$分隔的第二部分:5xHxCjtSjgkP73sY -
通常 Werkzug 会随机生成 16 字节左右的盐值,并用 base64/ASCII 编码。
-
盐值在存储中是明文的,用来在验证密码时复现哈希。
3️⃣ 加密方法
-
算法:PBKDF2
-
底层哈希函数:SHA-256
-
迭代次数:600,000
-
盐值长度:Werkzeug 默认大约 16 个字符
-
哈希输出长度:SHA-256 输出 32 字节(256 位),hex 编码后就是你看到的 64 个字符。
✅ 总结:
-
算法:PBKDF2-SHA256
-
迭代次数:600,000
-
盐值:
5xHxCjtSjgkP73sY(随机生成,用于防止彩虹表攻击) -
哈希值:
973324ba...(存储密码验证用)
评论列表