gpt4 book ai didi

php - 您如何测试两个哈希值(密码)是否相似?

转载 作者:可可西里 更新时间:2023-11-01 13:14:40 28 4
gpt4 key购买 nike

当用户创建密码时,我对其进行哈希处理(包括盐)并将其保存在数据库中。

现在当用户想要更改他或她的密码时,我想测试新密码是否与旧密码过于相似(我在不同的服务上看到过这种情况,尤其是网上银行)。

所以,我想我会使用similar_textlevenshtein 函数。如果用户必须输入他或她的旧密码,这会起作用。

但是当用户忘记了他们的密码,并且他们需要重新设置密码时,显然不必输入他们的旧密码。所以我需要将新密码与旧密码(保存在数据库中)进行比较,我没有明文形式的旧密码,而是散列。

现在,当我使用相同的盐对新密码进行哈希处理,并将其与旧密码(经过哈希处理)进行比较时,显然我无法测试新旧密码是否相似。

我只是想知道公司是如何做到的,当他们不将密码作为纯文本保存在数据库中时?

我在 Google 上真的找不到任何有用的东西。如果有人有任何建议或指向更详细讨论此问题的文章的链接,如果他们可以分享,我将不胜感激。

最佳答案

如果存储的密码经过哈希处理(而不是加密),测试相似性的一种方法是生成新密码的多个可能排列,对这些排列进行哈希处理,然后查看这些哈希值中是否有任何与存储的哈希值相对应。

生成排列的规则与不允许的相似性规则相同。

password1

password2

排列

password
password1 // This permutation's hash matches the stored hash.
password3
1password
etc...

关于php - 您如何测试两个哈希值(密码)是否相似?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031661/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com