md5密碼加鹽



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




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


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




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


// 對密碼進行加鹽後加密,加密後再通過Hibernate往數據庫裏存        String changedPswd=DigestUtils.md5Hex(name+pswd);
就是這樣簡單,上面代碼中鹽就是用戶名,可以的話還可以用用戶註冊時的郵件,註冊時間等非空信息(如果是空信息這個加鹽處理會失效)。
下面是數據庫中兩個用戶的記錄,他們的實際登錄密碼都是123456,但光看用戶記錄是完全看不出來的。這下別有用心的人打開數據庫看到的密碼都完全不一樣,他以前的手段就失效了。


因爲密碼是md5處理的密碼加用戶名,因爲用戶名都不相同,所以即使密碼相同的用戶,保存到數據庫中密碼也是不同的。
發佈了29 篇原創文章 · 獲贊 45 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章