當前位置: 妍妍網 > 碼農

面試官:為什麽忘記密碼要重設,而不是告訴我原密碼?

2024-04-24碼農

推薦關註

掃碼關註 後端架構師 」,選擇 星標 公眾號

重磅幹貨,第一時間送達!

責編:架構君 | 來源:前端充電寶

上一篇好文:

正文

大家好,我是後端架構師。

在網路世界中,密碼是我們保護個人帳戶安全的第一道防線。然而,我們經常會遇到忘記密碼的情況,而大多數網站在這種情況下只提供密碼重設服務,而不是直接告訴我們原始密碼。這背後的原因是什麽呢?本文將探討這一現象背後的原理!

密碼儲存的安全性

假設你在一個網站註冊了一個帳戶,設定了密碼為 "Password123"。為了確保這個密碼的安全,通常采用哈希演算法來儲存密碼。哈希演算法是一種單向加密過程,它可以將任意長度的輸入數據轉換成固定長度的輸出,但這個過程是不可逆的。

以SHA-256演算法為例,如果你的密碼 "Password123" 透過SHA-256哈希後,將會得到一個64位元的 哈希值 ,如:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

這個哈希值是唯一的,即使有其他使用者設定了相同的密碼,由於哈希演算法的特性,他們的哈希值也將是相同的。網站將這個哈希值儲存在資料庫中,而不是你的原始密碼。

哈希演算法的特性

哈希演算法具有以下幾個關鍵特性:

  • 不可逆性 :從哈希值幾乎不可能推匯出原始數據。即使黑客獲取了資料庫中的哈希值,他們也無法得知原始密碼是什麽。

  • 確定性 :相同的輸入總是產生相同的哈希值。這意味著每次對 "Password123" 進行哈希處理,都會得到相同的哈希值。

  • 高度雜湊 :即使輸入數據的微小變化,也會導致哈希值的巨大變化,這使得破解哈希值變得極其困難。

  • 盡管哈希演算法具有上述優點,但在理論上仍存 哈希碰撞 的可能性,即兩個不同的輸入可能產生相同的哈希值。為了降低這種風險,網站通常會使用 鹽值 (Salt)技術。鹽值是一個隨機生成的數據片段,它會與使用者的密碼結合後再進行哈希處理。

    假設你的密碼 "Password123" 加上一個獨特的鹽值 "randomSalt",結合後的字串為 "Password123randomSalt"。這個字串再次進行哈希處理,得到一個新的哈希值,然後將這個哈希值儲存在資料庫中。這樣,即使兩個使用者使用了相同的密碼,由於鹽值的不同,他們的哈希值也會不同,從而進一步增強了密碼的安全性。

    登入時的密碼驗證

    在使用者登入時,系統並不是直接比較使用者輸入的密碼和資料庫中儲存的哈希值。這是因為哈希值是不可逆的,無法直接比對原始密碼和哈希值。相反,系統會執行以下步驟來驗證使用者的身份:

    1. 使用者輸入他們的密碼。

    2. 系統對接收到的密碼執行與儲存在資料庫中相同的哈希演算法,並添加相同的鹽值(如果使用了鹽值)。

    3. 系統生成一個新的哈希值。

    4. 系統將新生成的哈希值與資料庫中儲存的哈希值進行比較。

    如果這兩個哈希值相匹配,那麽系統就會認為使用者輸入的密碼是正確的,因為只有正確的原始密碼經過相同的哈希過程才能生成匹配的哈希值。這樣,即使資料庫中儲存的是哈希值,系統也能驗證使用者的密碼,同時確保密碼的安全性。

    密碼重設的必要性

    由於網站儲存的是密碼的哈希值而不是原始密碼,當使用者忘記密碼時,網站無法提供原密碼。相反,網站會引導使用者透過重設密碼的方式來恢復帳戶存取許可權。使用者設定的新密碼將被哈希處理並儲存,替換掉之前的哈希值。這樣做不僅保護了使用者的密碼安全,也符合現代網路安全的最佳實踐。

    透過上述例子可以看到,當我們忘記密碼時,網站只能提供重設密碼的服務,而不是告訴我們原密碼,這是為了確保使用者數據的安全性。哈希演算法和鹽值技術的套用,使得即使在數據泄露的情況下,使用者的原始密碼也能得到保護。在登入過程中,系統透過重新計算哈希值並比對,來驗證使用者的身份。

    你還有什麽想要補充的嗎?

    最後,再次推薦下我們的AI星

    為了跟上AI時代我幹了一件事兒,我建立了一個知識星球社群:ChartGPT與副業。想帶著大家一起探索 ChatGPT和新的AI時代

    有很多小夥伴搞不定ChatGPT帳號,於是我們決定,凡是這三天之內加入ChatPGT的小夥伴,我們直接送一個正常可用的永久ChatGPT獨立帳戶。

    不光是增長速度最快,我們的星球品質也絕對經得起考驗,短短一個月時間,我們的課程團隊釋出了 8個專欄、18個副業計畫

    簡單說下這個星球能給大家提供什麽:

    1、不斷分享如何使用ChatGPT來完成各種任務,讓你更高效地使用ChatGPT,以及副業思考、變現思路、創業案例、落地案例分享。

    2、分享ChatGPT的使用方法、最新資訊、商業價值。

    3、探討未來關於ChatGPT的機遇,共同成長。

    4、幫助大家解決ChatGPT遇到的問題。

    5、 提供一整年的售後服務,一起搞副業

    星球福利:

    1、加入星球4天後,就送ChatGPT獨立帳號。

    2、邀請你加入ChatGPT會員交流群。

    3、贈送一份完整的ChatGPT手冊和66個ChatGPT副業賺錢手冊。

    其它福利還在籌劃中... 不過,我給你大家保證,加入星球後,收獲的價值會遠遠大於今天加入的門票費用 !

    本星球第一期原價 399 ,目前屬於試營運,早鳥價 149 ,每超過50人漲價10元,星球馬上要來一波大的漲價,如果你還在猶豫,可能最後就要以 更高價格加入了 。。

    早就是優勢。 建議大家盡早以便宜的價格加入!

    歡迎有需要的同學試試,如果本文對您有幫助,也請幫忙點個 贊 + 在看 啦!❤️

    在 還有更多優質計畫系統學習資源,歡迎分享給其他同學吧!

    PS:如果覺得我的分享不錯,歡迎大家隨手點贊、轉發、在看。

    最後給讀者整理了一份BAT大廠面試真題,需要的可掃碼加微信備註:「面試」獲取。

    版權申明:內容來源網路,版權歸原創者所有。除非無法確認,我們都會標明作者及出處,如有侵權煩請告知,我們會立即刪除並表示歉意。謝謝!

    END

    最近面試BAT,整理一份面試資料【Java面試BAT通關手冊】,覆蓋了Java核心技術、JVM、Java並行、SSM、微服務、資料庫、數據結構等等。在這裏,我為大家準備了一份2021年最新最全BAT等大廠Java面試經驗總結。

    別找了,想獲取史上最全的Java大廠面試題學習資料

    掃下方二維碼回復面試就好了

    歷史好文:

    掃碼關註後端架構師」,選擇星標公眾號

    重磅幹貨,第一時間送達

    ,你在看嗎?