成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試揭秘:忘記密碼時為何要重置,而非直接告知?

安全 應用安全
對于網站(或其他應用程序)來說,它們不應該存儲您的原始密碼。相反,它們通過一系列操作保存您的加密代碼。而且這種加密在從前端傳輸到服務器時已經執行,而且它是不可逆的加密操作,例如:MD5 + 加鹽。

最近,一個朋友在面試中遇到了一個非常有趣的問題。我相信大多數朋友可能沒有遇到過。

面試官問:“為什么很多網站在忘記密碼時要求重置密碼,而不是直接告訴用戶原始密碼?” (⊙?⊙)?

這是個很有趣的問題,對吧?許多網站都有“忘記密碼?”的功能,但為什么當我們點擊“忘記密碼”并經過一系列驗證后,網站會讓我們重置密碼,而不是直接告訴我們原始密碼呢?

今天,我們就來談談這個問題。

防止信息泄露防止信息泄露

對大多數人來說,為了防止忘記過多密碼,很多時候大家都會使用統一的密碼!也就是說,您的多個賬戶可能都有相同的密碼。因此,一旦密碼泄露,可能會影響到您的多個賬戶,甚至是銀行卡賬戶。

因此,對于網站(尤其是一些大型網站)來說,保護用戶數據安全是極其重要的事情。

所以,您在網站上保存的數據可能并不是那么安全。

對大多數人來說,最相關的經驗(網上見過)應該是詐騙電話。他們甚至可以非常清楚地告訴您所有個人信息。那么,這些信息從哪里來呢?

主要是由于數據泄露,所有您的個人信息都被他人知道。

那么,一般網站如何防止數據泄露呢?

通常的方法是加密。而且這種加密可能在不同階段進行多次。例如,常見的有:SHA256、加鹽、MD5、RSA等。

這看起來非常安全,但仍然存在一個問題。開發者知道如何解密它們。

或者有些朋友會認為,正確的密碼仍然存在于數據庫中?一旦發生信息泄露,不是仍然存在密碼泄露的問題嗎?

是的,因此為了解決這個問題,實際上,網站本身并不知道您的密碼是什么。

網站本身并不知道您的密碼是什么

對于網站(或其他應用程序)來說,它們不應該存儲您的原始密碼。相反,它們通過一系列操作保存您的加密代碼。而且這種加密在從前端傳輸到服務器時已經執行,而且它是不可逆的加密操作,例如:MD5 + 加鹽。

一般來說,我們通過哈希算法對密碼進行加密和保存。

圖片圖片

哈希算法,也稱為哈希函數或摘要算法,用于生成任意長度數據的固定長度唯一標識符,也稱為哈希值或消息摘要(后文簡稱哈希值)。

目前,較常用的方法是通過MD5 + Salt加密密碼。在密碼學中,加鹽指的是在密碼的任意固定位置插入特定字符串,以使哈希后的結果與使用原始密碼的哈希結果不匹配。這個過程稱為“加鹽”。

然而,這種方法現在不再推薦,因為MD5算法安全性低,抗碰撞能力差。您可以使用更安全的加密哈希算法 + Salt(如SHA2、SHA3、SM3,具有更高的安全性和更強的抗碰撞能力),或者直接使用慢哈希(如Bcrypt)。

假設我們在這里使用SHA-256 + Salt的方法。

以下是一個簡單的示例代碼:

publicclassHashPasswordExample{
publicstaticvoidmain(String[] args){
// 要哈希的密碼
String password ="123456";
// 哈希的鹽
String salt ="salt-test";
try{
// 創建SHA-256摘要對象
MessageDigest messageDigest =MessageDigest.getInstance("SHA-256");
// 更新摘要與組合的密碼和鹽
            messageDigest.update((password + salt).getBytes());
// 計算哈希值
byte[] result = messageDigest.digest();
// 將哈希值轉換為十六進制字符串
HexBinaryAdapter hexBinaryAdapter =newHexBinaryAdapter();
String hexString = hexBinaryAdapter.marshal(result);
// 打印原始密碼
System.out.println("原始字符串: "+ password);
// 打印SHA-256哈希值(小寫)
System.out.println("SHA-256哈希: "+ hexString.toLowerCase());
}catch(Exception e){
            e.printStackTrace();
}
}
}

輸出:

原始字符串: 123456
SHA-256哈希: 3d5ecd90301b307c267f1c09e8a4b2433c2258fcb7441df91a32e245ea86bf96

在這個示例中,服務器保存的是對密碼“123456”進行加鹽和哈希后的數據,即:“3d5ecd90301b307c267f1c09e8a4b2433c2258fcb7441df91a32e245ea86bf96”。

圖片圖片

當您輸入密碼進行登錄時,服務器會首先取出與您的密碼對應的鹽,然后再進行一次獲取哈希值的過程。如果最后計算出的哈希值與數據庫中保存的哈希值相同,則表示密碼正確。否則,密碼錯誤。

哈希算法是不可逆的。您無法從哈希值中獲得原始值。通過這種方式,服務器并不知道您的原始密碼,自然也無法告訴您原始密碼是什么。

為什么許多網站要求更改密碼時不能與原密碼相同?

然后有些朋友會再次產生疑問。為什么許多網站要求更改的密碼不能與原密碼相同?這是如何實現的?

這個過程實際上與驗證密碼的正確性是相同的。只需計算哈希值并進行比較即可!

結論

通過以上分析,我們可以清楚地看到,網站要求用戶在忘記密碼時重置而非直接告知原始密碼的做法,主要是出于對用戶信息安全的深刻考量。現代網站采用的加密措施,確保了即使數據泄露,黑客也難以獲取用戶的真實密碼。此外,密碼重置的流程不僅增加了用戶的安全性,也維護了整個系統的安全性。網站不存儲原始密碼,而是以不可逆的加密形式保存,這樣一來,即使系統遭到攻擊,用戶的敏感信息依然得以保護。最終,重置密碼的機制不僅保護了用戶的個人隱私,也提高了對網絡安全的信任。面對日益復雜的網絡環境,我們每個用戶都應增強自身的安全意識,定期更新密碼,并了解如何合理使用各種網絡安全工具,以確保個人信息的安全和隱私。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2024-07-29 00:00:00

原密碼技術安全

2024-06-24 08:39:45

2024-04-15 10:16:38

2024-11-26 08:36:56

SpringJar機制

2021-12-06 06:19:52

Windows Server管理員密碼

2011-10-09 15:02:58

藍牙4.0NFC蘋果

2012-11-21 10:10:06

OpenStack網絡虛擬化

2022-05-10 16:37:25

零信任網絡安全

2013-01-31 18:52:58

CiscoACEF5

2013-06-25 09:29:46

OpenStackAmazon S3云存儲

2019-09-09 10:25:54

MySQLMariaDB roo密碼

2013-12-26 13:35:39

2024-11-25 18:53:55

Linux

2010-06-04 16:03:37

MySQL root密

2010-06-13 13:10:09

MySQLROOT密碼

2016-04-18 18:22:06

2015-05-26 08:46:58

密碼LaZagne Pro密碼檢索

2010-05-26 17:21:14

MySQL root密

2010-06-10 15:44:53

2024-07-31 16:21:08

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久在线观看 | 一区二区福利视频 | 综合久久一区 | 欧美天堂 | 久久精品无码一区二区三区 | 色秀网站 | 一区久久 | 日韩毛片播放 | 亚洲精品4| 精品国产成人 | 久久久久久久一区 | 精品国产乱码久久久久久中文 | 国产日韩欧美精品一区二区 | 国产精品久久久久久久久大全 | 日韩影音 | 日韩精品一区在线 | 国产成人精品久久久 | 久草视频在线播放 | 精品网站999www | 在线亚洲一区二区 | 欧美一级久久精品 | 国产精品免费一区二区 | 日本三级做a全过程在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 日韩一区二区在线视频 | 日韩国产精品一区二区三区 | 国产精品久久久久久久久污网站 | 日本高清aⅴ毛片免费 | 亚洲视频在线看 | 日韩视频在线播放 | 一级视频黄色 | 日本韩国欧美在线观看 | 在线观看国产 | 欧美日韩一区在线 | 欧美激情视频一区二区三区在线播放 | 一区二区三区四区在线视频 | 国产高清区 | 国产精品久久久 | 日韩在线电影 | 91社影院在线观看 | 国产精品欧美一区二区三区 |