Python中哈希存储的密码与校验计算结果不一致问题如何排查
密码哈希校验不一致问题排查
- 优先排查存储字段长度:
hash_password返回的完整哈希字符串总长度为192字符(前64位是盐,后128位是密码哈希结果),如果存储哈希的字段长度小于192,会导致哈希值被截断,校验时提取的盐和待比对的存储哈希都不正确。如果打印的pwdhash和stored_password长度不一致,基本可以确定是该问题。 - 排查存储环节的额外处理:如果存储时对哈希字符串做了转义特殊字符、大小写转换、多余字符拼接等操作,会导致取出的
stored_password和加密生成的原始结果不一致。你可以在hash_password返回结果前打印生成的完整哈希,和校验时取出的stored_password做全量比对,确认存储环节没有修改哈希值。 - 排查入参是否正确:确认调用
verify_password时传入的stored_password是完整的哈希字段值,而非其他字段值、对象实例;同时确认传入的provided_password和加密时的原始密码完全一致,注意前后空格、大小写、特殊字符等细节。 - 补充安全提示:你当前实现使用全局固定盐,不符合密码存储安全规范,生产环境必须为每个用户生成独立的随机盐,大幅降低彩虹表、撞库攻击的风险。
内容的提问来源于stack exchange,提问作者5676
相关产品推荐
相关产品推荐

