Django - 检查两个密码哈希是否具有相同的原始密码

我想跟踪用户密码更改历史,如果他们以前使用过当前密码,则显示警告。请注意,我不想阻止用户设置密码(如果以前使用过),我想让他们设置密码,但之后只是显示警告。所以我要找的不是密码验证器。

我知道虽然 Django 将用户密码保存在数据库中,但它会使用随机盐创建密码的哈希值。因此,相同密码的 2 个哈希值不会相同。不过,是否可以判断是否使用与输入相同的原始密码创建了 2 个不同的密码哈希值?

最佳答案

如果您无权访问明文密码,而您所拥有的只是哈希值,则无法对它们进行任何比较。这正是为了使密码不可逆,尤其是它们的整个数据库。如果有足够的时间和计算能力,您也许可以暴力破解一个密码,但您不能将这些知识应用于任何其他哈希,因此暴力破解整个数据库的成本非常昂贵。

可以在注册、登录或重置密码时,当用户输入他们的明文密码时进行此类比较。那时,您只需要用现有密码的盐值对密码进行哈希处理,然后比较哈希值。

https://stackoverflow.com/questions/60636620/

相关文章:

javascript - Vue-Apexcharts 饼图总数不显示

oracle - PL/SQL RAISE_APPLICATION_ERROR 参数问题

flutter - 如何在 flutter, android studio 中不生成红色框,

javascript - 在 Promise 完成后让 React 重新渲染

regex - Ansible 列表变量和选择过滤器以忽略匹配项

c# - 帮助解决ASP.NET Core 3.1 Application中的 'There is

r - 按列汇总 : mean and sum

css - react-pdf 中的样式显示异常行为

amazon-web-services - AWS CLI : Could not connect

oracle - 使用 ALTER TABLE 在 ORACLE 中添加多个约束