出于安全原因,出于安全原因,我需要强制用户经常更改密码,而我不想要的密码与前一密码非常接近。
但出于安全原因,我无法在DB中保留真实密码(即:我需要哈希它或任何其他方法)。 但我不认为比较哈希会有所帮助。
有没有办法比较2个密码,以便知道它们是否彼此接近?
Ex:密码和密码1彼此太靠近了。
答案 0 :(得分:3)
在让用户选择新密码时,您可以输入他/她的旧密码。这允许您将新密码与旧密码进行比较,而无需将旧密码存储在纯文本中。
答案 1 :(得分:1)
当用户正常登录时,您将在数据库中存储密码的哈希值。您可以通过散列它们键入的内容来比较键入的哈希值,以及结果哈希是否与数据库中的哈希值相同。
要与旧密码进行比较,您可以做同样的事情。您可以通过将密码哈希字段复制到old-password1来将最后一个密码(或最后5,10 ... x密码)保存在数据库中(如果您想让它们在以后重新使用,请将每个密码移到一个列上)一些变化,old-password1变为旧密码2等)然后当他们输入新密码时,你可以用你以往的方式进行比较,但是对着旧的哈希。如果它与旧的哈希匹配,则拒绝它并显示一条消息,表明它不能是他们使用的最后一个X密码之一。
您没有存储任何明文密码,您可以保留任意数量的旧哈希。