但我們要儲存使用者名稱密碼的時候,顯然明文儲存是不太可取的,萬一你的資料庫的賬號密碼都被洩露了,那那些在你資料庫中的密碼不是都沒洩露出去了嗎?
所以我們要對密碼進行加密。
(網上有很多解釋都不太容易理解,下面是我自己的理解)
首先我們要知道md5是雜湊函式。不懂的可以查一下。雜湊就是雜湊函式。
舉乙個簡單的例子,我的雜湊函式是 x%8 那我 3%8和11%8得出來的值是一樣的。 它是多對一的。 所以當然是不可逆的。
你一那邊怎麼知道對應多那邊的哪個?但這只是乙個很簡單的例子,md5肯定要複雜很多。
另外經過md5加密後,得到的字串是固定的長度,不管你之前的字串有多長,這是md5裡面的對映關係決定的。
md5也可以被暴力破解,因為如果你的密碼和另外乙個的使用者的密碼是相同的,那你們加密過後的密文也是相同的。這可以通過加鹽來解決。
簡單來說:由原來的h(p)變成了h(p+salt),相當於雜湊函式h發生了變化,每次雜湊計算使用的salt是隨機的
h如果發生了改變,則已有的彩虹表資料就完全無法使用,必須針對特定的h重新生成,這樣就提高了破解的難度。
就是在你的密碼上加寫數值,在用md5加密。
為什麼md5是不安全的?
正確的說法為 不正確的使用md5是不安全的。cmd5這個 你可以把這個 理解為乙個超級大的彩虹表,你可以反向查詢hash對應的明文,當然只能查詢到在表裡面的資料了。生日,手機號,純數字的,如果有確定位數那就更好了,通過遍歷的方式,可以生成包含明文和hash值的一張超級大的表,通過查詢hash值,反向...
一種簡單的給MD5加鹽演算法
現在的md5密碼資料庫的資料量已經非常龐大了,大部分常用密碼都可以通過md5摘要反向查詢到密碼明文。為了防止內部人員 能夠接觸到資料庫或者資料庫備份檔案的人員 和外部入侵者通過md5反查密碼明文,更好地保護使用者的密碼和個人帳戶安全 乙個使用者可能會在多個系統中使用同樣的密碼,因此涉及到使用者在其他...
安全的Md5加密 兩次加密 加鹽
commons codec commons codec org.apache.commons commons lang3 3.6import org.apache.commons.codec.digest.digestutils import org.junit.test author yhq da...