密码重复的判定机制是怎样的?到底是我之前输入真的有问题还是机制问题?


一般网站密码的存储,常见做法是 把密码原文 取hash,可以理解为一种取摘要信息的单向映射,类似于数学中取余数的做法。

这样的密码,不同的输入值,得到完全不一样的输出值,且无法被反推出原文。也就是说服务商存储了hash值,但是他也不知道你的密码是什么。只能在登录的时候 也重新计算一遍hash,去匹配计算后的结果是不是一致。

计算结果理论上是可以无限重复的,但是实际上输出取值范围极大,超过宇宙粒子数的数量级,所以一般被认为是不会重复的。

老一代最常见的是md5,不过已经攻破很久了(攻破指的是能快速 找到 md5等值的 输入值)。

目前用的比较多的是 sha256或者sha512吧,一般也要加一点盐(分组加一些随机值),提高一点安全度,也兼顾了计算效率。

因此有极极极小概率是新输入的值 计算hash后跟原 密码的hash一样…

但是如果一样的话 在网站判重的过程中应该也是一样的,不会在登录验证中失败。

因此最可能是纯粹的输入有误,诸如空格、全形半形之类的…否则也可能是 网站出了奇怪的问题,导致同一个密码,既不能通过密码验证,又在重设密码时被 判定重复(一般情况下不会)。


hash 碰撞的概率极小,跟被雷打到/彩票中头奖差不多。

大概率的情况是,这个服务把你的密码外泄了,但不敢明说,所以出此下策强迫使用者改密码。


确保输入的密码和重设时输入的密码相同的情况下,有两种可能:

1、网站、应用或设备登录时,提交用户密码的加密方式更换或错误,修改密码是加密方式正确。

2、用户输入密码错误,但是与前几次的旧密码相同,重设时依然会提示新密码与最近的旧密码相同。(QQ修改密码的规则就类似,不能和最近几次的密码相同)

第一种情况是厂商的程序出现错误。第二种情况就是单纯的密码错误。


前提:网站对重设密码有要求,必须不能与旧密码重复。

至于怎么实现的,可能是明文比对,或者某种演算法,具体实现我不懂…

那么出现输入「旧密码」A登陆不了,重设输入「新密码」B提示重复,我猜测有几种可能:

1.A输错了(你以为是旧密码其实不是),B才是旧密码。

2.A输错了,B是更早以前的旧密码。

3.A输错了,B没有问题,但是网站不是明文比对,而是根据某种演算法排重,导致B和旧密码一致而被认定为旧密码。

4.A输对了,但是你被盗号了,密码已经被改成了B…当然,盗号的人也可能是你自己


在这种情况下呢,你要把重新设置的密码不能与你之前设置的密码相同,例如,你加上一个。这样都是可以的


因为密码一样了,你只要记住上次的密码,然后再输入不一样的密码就可以了,如果还不会关注我我教你


可以肯定 是你 登录的时候 输入错了。

至于重设密码时,如何判断新旧密码是否一致, 相同 的 密码字元串 对比一下不就知道了,一般就算密码存储的时候是已经哈希过的,同样的加密 演算法 和 种子,同样的密码内容的话,哈希结果也一样。

想知道自己 重设密码 和 登录 输入的密码是否一致, 有的浏览器支持显示密码,你可以试试在输入密码的时候,显示出来,自己对比一下 就知道了


重置的密码(新密码)不能是之前使用过的密码(旧密码)。

密码是区分字母大小写的,字母大小写不同则不是相同的密码。


这可以向网站报告bug了

不过大概率是不是你在重设的时候想起旧密码输进去了


推荐阅读:
相关文章