什么是“加鹽”?為什么加密也要“加鹽”?
你聽說過“加鹽”嗎?這可不是指的炒菜,而是一種加密手段,那么什么是加鹽?為什么要加鹽呢?今天我們就來了解一下加鹽加密吧。
什么是加鹽?
在密碼學(xué)中,通過在密碼任意固定位置插入特定字符串,讓散列后的結(jié)果和使用原始密碼的散列結(jié)果不相符,這樣一個過程我們稱之為“加鹽”。
“鹽值”是一組隨機的字符串,被稱為Salt,由系統(tǒng)隨機生成。Salt可以插在最前面、最后面,也可以插在中間,可分開插入也可倒序。

為什么要加鹽?
在實際應(yīng)用中,出于安全和數(shù)據(jù)保密的考慮,常常需要使用到加密算法,一些網(wǎng)站的數(shù)據(jù)庫管理著用戶的ID及密碼。密碼常以MD5等加密后的形式存在,但也并非萬無一失。于是就出現(xiàn)了加鹽加密的方式,這種加入鹽值的方式可以有效防止黑客暴力破解用戶ID和密碼。

第一代密碼:數(shù)據(jù)庫明文存儲,一旦數(shù)據(jù)庫泄露,用戶數(shù)據(jù)全部泄漏。
第二代密碼:數(shù)據(jù)庫加密存儲,典型加密算法有 MD5 和 SHA1 ,數(shù)據(jù)庫存儲的密碼為加密后的密文。理論上來說不能被解密,即使數(shù)據(jù)庫丟失,但由于存儲為密文,所以無法判斷用戶原始密碼。
第三代密碼:數(shù)據(jù)庫存儲MD5加密后的密碼+Salt,進行加鹽處理。當(dāng)密碼設(shè)置過于簡單,第二代密碼加密方式就不那么有效了,于是為數(shù)據(jù)庫加入一個Salt鹽值字段(Salt可以是任意字母、數(shù)字、或字母數(shù)字的組合,必須是隨機產(chǎn)生的),每個用戶Salt值均不相同。
加鹽流程
用戶注冊時:
- 用戶在網(wǎng)站注冊時提供ID與密碼;
- 系統(tǒng)為用戶分配鹽值;
- 鹽值插入密碼后進行HASH;
- 將ID,HASH值與鹽值一起存入數(shù)據(jù)庫。

身份驗證時:
- 用戶提供ID與密碼;
- 系統(tǒng)在數(shù)據(jù)庫中通過用戶提供的ID查找HASH值與鹽值;
- 將鹽值插入用戶提供的密碼后進行HASH;
- 將HASH值與數(shù)據(jù)庫中的HASH值比較,相等則驗證成功,反之則驗證失敗。
免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。



