You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中生成PBKDF2格式密码哈希以修改users.json?

用Python生成PBKDF2格式密码字符串以修改users.json

你给出的密码格式是PBKDF2哈希的常见表示方式,结构为:
pbkdf2:<迭代次数>:<十六进制盐值>:<十六进制哈希值>

从示例字符串来看,该软件使用的是PBKDF2-HMAC-SHA256(哈希值长度为64字节,对应SHA-256输出),迭代次数为10000,盐值长度为16字节。

生成符合格式的密码字符串

直接用Python标准库的hashlib和os模块即可实现,无需额外依赖:

import hashlib
import os

def generate_pbkdf2_password(password: str, iterations: int = 10000) -> str:
    # 生成16字节随机盐值
    salt = os.urandom(16)
    # 计算PBKDF2-HMAC-SHA256哈希
    dk = hashlib.pbkdf2_hmac(
        'sha256',
        password.encode('utf-8'),
        salt,
        iterations
    )
    # 拼接成指定格式字符串
    return f"pbkdf2:{iterations}:{salt.hex()}:{dk.hex()}"

# 示例:生成新密码"new_pass123"的PBKDF2格式字符串
new_pwd_str = generate_pbkdf2_password("new_pass123")
print(new_pwd_str)

修改users.json的示例代码

生成密码字符串后,可按以下流程修改用户数据库:

import json

# 读取users.json文件
with open('users.json', 'r', encoding='utf-8') as f:
    users = json.load(f)

# 定位目标用户并更新密码(假设通过username字段识别)
target_user = "your_target_username"
for user in users:
    if user.get('username') == target_user:
        user['password'] = generate_pbkdf2_password("new_pass123")
        break

# 写入修改后的内容
with open('users.json', 'w', encoding='utf-8') as f:
    json.dump(users, f, indent=2, ensure_ascii=False)

注意事项

  • 必须保持迭代次数与原密码字符串一致(示例中为10000),否则软件无法验证密码有效性
  • 盐值需随机生成,禁止重复使用固定盐值,避免彩虹表攻击
  • 密码需以UTF-8编码传入哈希计算

内容的提问来源于stack exchange,提问作者RubenLaguna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:17:21