以用戶為例,密碼加密的方式如下:
1、直接明文保存,比如用戶設(shè)置的密碼是“123456”,直接將“123456”保存在數(shù)據(jù)庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯(lián)網(wǎng)公司,都可能采取的是這種方式。
2、使用對稱加密算法來保存,比如3DES、AES等算法,使用這種方式加密是可以通過解密來還原出原始密碼的,當(dāng)然前提條件是需要獲取到密鑰。不過既然大量的用戶信息已經(jīng)泄露了,密鑰很可能也會泄露,當(dāng)然可以將一般數(shù)據(jù)和密鑰分開存儲、分開管理,但要完全保護(hù)好密鑰也是一件非常復(fù)雜的事情,所以這種方式并不是很好的方式。
3、使用MD5、SHA1等單向HASH算法保護(hù)密碼,使用這些算法后,無法通過計算還原出原始密碼,而且實現(xiàn)比較簡單,因此很多互聯(lián)網(wǎng)公司都采用這種方式保存用戶密碼,曾經(jīng)這種方式也是比較安全的方式,但隨著彩虹表技術(shù)的興起,可以建立彩虹表進(jìn)行查表,目前這種方式已經(jīng)很不安全了。
4、特殊的單向HASH算法,由于單向HASH算法在保護(hù)密碼方面不再安全,于是有些公司在單向HASH算法基礎(chǔ)上進(jìn)行了加鹽、多次HASH等擴(kuò)展,這些方式可以在一定程度上增加難度,對于加了“固定鹽”的HASH算法,需要保護(hù)“鹽”不能泄露,這就會遇到“保護(hù)對稱密鑰”一樣的問題。
5、PBKDF2算法,該算法原理大致相當(dāng)于在HASH算法基礎(chǔ)上增加隨機(jī)鹽,并進(jìn)行多次HASH運(yùn)算,隨機(jī)鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表的難度都大幅增加。使用PBKDF2算法時,HASH算法一般選用sha1或者sha256,隨機(jī)鹽的長度一般不能少于8字節(jié),HASH次數(shù)至少也要1000次,這樣安全性才足夠高,該算法也是美國國家標(biāo)準(zhǔn)與技術(shù)研究院推薦使用的算法。
6、bcrypt、scrypt等算法,這兩種算法也可以有效抵御彩虹表,使用這兩種算法時也需要指定相應(yīng)的參數(shù)。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com