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

标签 django cryptography django-users

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

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

最佳答案

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

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

关于Django - 检查两个密码哈希是否具有相同的原始密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60636620/

相关文章:

postgresql - PostgreSQL 中的加密随机主键

jquery - JSON 对象的 Javascript 加密

c# - 使用 nShield HSM 的 .Net Crypto Service Provider 错误

Django:为什么要创建一个OneToOne到UserProfile而不是将auth.User子类化?

django - 如何获得 django 中所有相关对象的不同集合?

python - 如何从预填充对象的表单中排除字段

python - 错误 : No module named psycopg2. 扩展

django - 模型元中的 "swappable"是什么?

python - Django 用户帐户,扩展帐户

django - 如何在 django-admin 中添加自定义按钮