文章内容

2025/9/19 3:11:26,作 者: 黄兵

werkzeug.security 的 enerate_password_hash 介绍

这里有一段密文:

pbkdf2:sha256:600000$5xHxCjtSjgkP73sY$973324bac010ee392f4999151b1426cf83c90bae8b5ba1647d1a7b65d55d9771

这是由 Werkzeuggenerate_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...(存储密码验证用)

分享到:

发表评论

评论列表