Security 与以前的密码相比

Security 与以前的密码相比,security,passwords,comparison,Security,Passwords,Comparison,出于安全原因,我需要强制用户经常更改其密码,而出于明显的安全原因,我不想要的是与前一个密码非常接近的密码 但出于安全原因,我不能在数据库中保留真实密码(即:我需要散列它或任何其他方法)。 但是我不认为比较散列会有帮助 有没有办法比较两个密码,以便知道它们是否彼此接近 例如:password和password1彼此太近。在让用户选择新密码时,您让他/她输入他/她的旧密码。这允许您将新密码与旧密码进行比较,而不必以明文形式存储旧密码。在让用户选择新密码时,您可以让他/她输入他/她的旧密码。这允许您将

出于安全原因,我需要强制用户经常更改其密码,而出于明显的安全原因,我不想要的是与前一个密码非常接近的密码

但出于安全原因,我不能在数据库中保留真实密码(即:我需要散列它或任何其他方法)。 但是我不认为比较散列会有帮助

有没有办法比较两个密码,以便知道它们是否彼此接近


例如:password和password1彼此太近。

在让用户选择新密码时,您让他/她输入他/她的旧密码。这允许您将新密码与旧密码进行比较,而不必以明文形式存储旧密码。

在让用户选择新密码时,您可以让他/她输入他/她的旧密码。这允许您将新密码与旧密码进行比较,而无需以明文形式存储旧密码。

当用户正常登录时,您将在数据库中存储密码的哈希值。通过对输入的密码进行散列,将其与散列进行比较,如果生成的散列与数据库中的散列相同,则接受该散列

要与旧密码进行比较,您也可以这样做。只需将密码散列字段复制到old-password1,即可将最后一个密码(或最后5、10…x个密码)保存到数据库中(如果希望在多次更改后防止重复使用,请将每个密码移到一列上,old-password1变为old-password2等)然后,当他们输入新密码时,您可以使用与以往相同的方式进行比较,但要与旧的哈希进行比较。如果它与旧的散列匹配,您将拒绝它,并显示一条消息,说明它不能是他们使用的最后X个密码之一


您没有存储任何明文密码,并且可以保留任意多的旧哈希值

当用户正常登录时,您正在数据库中存储密码哈希。通过对输入的密码进行散列,将其与散列进行比较,如果生成的散列与数据库中的散列相同,则接受该散列

要与旧密码进行比较,您也可以这样做。只需将密码散列字段复制到old-password1,即可将最后一个密码(或最后5、10…x个密码)保存到数据库中(如果希望在多次更改后防止重复使用,请将每个密码移到一列上,old-password1变为old-password2等)然后,当他们输入新密码时,您可以使用与以往相同的方式进行比较,但要与旧的哈希进行比较。如果它与旧的散列匹配,您将拒绝它,并显示一条消息,说明它不能是他们使用的最后X个密码之一


您没有存储任何明文密码,并且可以保留任意多的旧哈希值

例如:你没有回答这个问题,或者我不明白你的意思。好的,对不起。你是对的,我的建议是避免重复使用以前的密码,但是你也可以使用这种技术来存储上一个密码的变体。假设最后一个密码是Wednesday1,您希望阻止Wednesday2、Wednesday3等。您可以预测常见的变化(数字添加到末尾,数字代替字母)L33tSp3@k样式…)并存储这些常见变体的哈希版本。这需要一点额外的存储空间,但肯定是可行的。不仅是这种情况,这是一个例子。你没有回答问题,或者我不明白你的意思。好的,对不起。你是对的,我的建议是避免重复使用以前的密码,但是你也可以使用这种技术来存储上一个密码的变体。假设最后一个密码是Wednesday1,您希望阻止Wednesday2、Wednesday3等。您可以预测常见的变化(数字添加到末尾,数字代替字母)L33tSp3@k样式…)并存储这些常见变体的哈希版本。这需要一点额外的存储空间,但肯定是可行的。不仅仅是这种情况,这是一个例子。