出于安全原因,出于明显的安全原因,我需要强制用户经常更改密码,而我不想要的密码与之前的密码非常接近。
但是出于安全原因,我不能将真实密码保存在数据库中(即:我需要对其进行哈希处理或任何其他方法)。但我认为比较哈希不会有帮助。
有没有办法比较两个密码以了解它们是否彼此接近?
例如:password 和 password1 距离太近。
出于安全原因,出于明显的安全原因,我需要强制用户经常更改密码,而我不想要的密码与之前的密码非常接近。
但是出于安全原因,我不能将真实密码保存在数据库中(即:我需要对其进行哈希处理或任何其他方法)。但我认为比较哈希不会有帮助。
有没有办法比较两个密码以了解它们是否彼此接近?
例如:password 和 password1 距离太近。
在让用户选择新密码时,您让他/她输入他/她的旧密码。这允许您将新密码与旧密码进行比较,而无需以明文形式存储旧密码。
当用户正常登录时,您将密码的哈希值存储在数据库中。您可以通过对输入的内容进行散列来将输入的密码与散列进行比较,如果生成的散列与数据库中的散列相同,则它被接受。
要与旧密码进行比较,您会做同样的事情。您可以通过将密码哈希字段复制到 old-password1 将最后一个密码(或最后 5、10 ...x 个密码)保存在数据库中(如果您想防止密码在之后重复使用,请将每个密码移到一列上)一些更改,old-password1 变成 old-password2 等)然后当他们输入新密码时,您可以像往常一样进行比较,但与旧的哈希值进行比较。如果它与旧哈希匹配,您会拒绝它并显示一条消息,说明它不能是他们使用的最后 X 密码之一。
您没有存储任何明文密码,并且您可以保留任意数量的旧哈希值。