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

寻求Python argon2库中用于禁用账户的特殊Argon2哈希值

Argon2 实现账户禁用的特殊哈希方案

核心思路

要实现仅通过修改哈希值禁用账户、验证时仅触发VerifyMismatchError且视觉可区分的需求,关键是生成格式完全合法但对应不存在密码的Argon2哈希:

  • 基于标准Argon2哈希结构,修改盐值为带特殊标识(如!)的内容,保证哈希格式合法,避免解析异常。
  • 由于该哈希对应的真实密码不存在,验证任何输入都会触发VerifyMismatchError,同时盐值中的!能让哈希和正常哈希视觉区分(类似/etc/shadow的!标识)。

示例代码

import argon2
from argon2.exceptions import VerifyMismatchError

# 预先生成禁用账户的特殊哈希(使用带!的盐,对应一个不存在的密码)
# 可以提前生成一次,直接存储使用
ph = argon2.PasswordHasher()
# 生成示例:运行后会得到类似 $argon2id$v=19$m=65536,t=3,p=4$I2Rpc2FibGVkX3NhbHRfMTIzNA$xxx 的哈希
# disabled_hash = ph.hash("__DISABLED_ACCOUNT__", salt=b"!disabled_salt_1234")

# 替换为预先生成的禁用哈希
valid_but_impossible_hash = "$argon2id$v=19$m=65536,t=3,p=4$I2Rpc2FibGVkX3NhbHRfMTIzNA$JZ9KZ7eQVQa9QpZ8eU7x5y4w3v2u1t0s9r8q7p6o5n4m3l2k1j0i"

try:
    ph.verify(valid_but_impossible_hash, "user_input_password")
    print("password is valid")
except VerifyMismatchError:
    print("password is invalid")
# 格式合法的哈希不会触发其他异常,因此无需额外处理解析类错误

说明

  1. 格式合法性:该哈希完全符合Argon2的格式规范,验证时不会抛出解析错误类异常,只会因密码不匹配触发VerifyMismatchError。
  2. 视觉区分:哈希的盐值部分包含!标识,存储时能一眼识别为禁用账户的特殊哈希。
  3. 灵活性:如果需要区分“账户禁用”和“密码错误”,可以在捕获VerifyMismatchError后,检查哈希中是否包含预设的特殊盐值标识,再输出对应提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:55:16