md5密碼加鹽


http://www.blogjava.net/heyang/archive/2010/11/28/339233.html

 

按:以下還是炒冷飯,如果您對加鹽了解就不用往下看了,以免浪費寶貴時間。 如果不了解下文部分細節的話,您可以參考這篇文章:使用MD5對存放在數據庫中用戶密碼進行保護
直接對重要數據進行MD5處理后,反向解密確實難度很大,但還是可以找出破綻的,請看下圖:

(圖片不能顯示就文字說明一下) 例如:兩個人或多個人的密碼相同,通過md5加密后保存會得到相同的結果。破一個就可以破一片的密碼。


如果名為李自成的用戶可以查看數據庫,那么他可以觀察到自己的密碼和別人的密碼加密后的結果都是一樣,那么,別人用的和自己就是同一個密碼,這樣,就可以利用別人的身份登錄了。
那么我們以前的加密方法是否對這種行為失效了呢?其實只要稍微混淆一下就能防范住了,這在加密術語中稱為“加鹽”。具體來說就是在原有材料(用戶自定義密碼)中加入其它成分(一般是用戶自有且不變的因素),以此來增加系統復雜度。當這種鹽和用戶密碼相結合后,再通過摘要處理,就能得到隱蔽性更強的摘要值。下面請見代碼:

// 對密碼進行加鹽后加密,加密后再通過Hibernate往數據庫里存         String changedPswd = DigestUtils.md5Hex(name + pswd);

就是這樣簡單,上面代碼中鹽就是用戶名,可以的話還可以用用戶注冊時的郵件,注冊時間等非空信息(如果是空信息這個加鹽處理會失效)。
下面是數據庫中兩個用戶的記錄,他們的實際登錄密碼都是123456,但光看用戶記錄是完全看不出來的。這下別有用心的人打開數據庫看到的密碼都完全不一樣,他以前的手段就失效了。

因為密碼是md5處理的密碼加用戶名,因為用戶名都不相同,所以即使密碼相同的用戶,保存到數據庫中密碼也是不同的。
加鹽就是這樣簡單,感謝您看到這里。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM