首先,我們看看什么是鹽:http://zh.wikipedia.org/zh/%E7%9B%90_%28%E5%AF%86%E7%A0%81%E5%AD%A6%29
通常情況下,當字段經過散列處理(如MD5),會生成一段散列值,而散列后的值通常是無法通過特定算法得到原始字段的。可是某些情況,比方一個大型的彩虹表,通過在表中搜索該MD5值,非常有可能在極短的時間內找到該散列值相應的真實字段內容。
加鹽后的散列值,能夠極大的減少因為用戶數據被盜而帶來的password泄漏風險,即使通過彩虹表尋找到了散列后的數值所相應的原始內容,可是因為經過了加鹽,插入的字符串擾亂了真正的password,使得獲得真實password的概率大大減少。
可是非常多人沒意識到的是靜態鹽仍然不夠安全。因為靜態鹽要面臨兩種攻擊:
1,基于特定的靜態鹽,能夠生成特定的彩虹表.
2,對靜態鹽處理過的散列password,能夠按出現頻率進行排序,最常出現的散列password,相應的明文password必定還是那些111111、123456之類的。
因此,對于重要的賬號password,我們須要採用動態鹽來對password進行混淆。一個經常使用做法就是把賬號名進行MD5之后,作為動態鹽。則上述兩種攻擊將失效。
比方,username是wsq,相應的md5是4572381974328f9c作為動態鹽,password是123456,加上動態鹽之后為4572381974328f9c 123456 ,再MD5是d16e970d6e5b95b9。則終于的計算結果是無法推測的(unguessable)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
