密碼重複的判定機制是怎樣的?到底是我之前輸入真的有問題還是機制問題?


一般網站密碼的存儲,常見做法是 把密碼原文 取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了

不過大概率是不是你在重設的時候想起舊密碼輸進去了


推薦閱讀:
相关文章