爲什麼MD5算法要加密兩次
問題描述:
爲什麼MD5算要加密兩次
用戶端加密
爲了防止密碼明文在http上傳輸,則需要在前端進行一次md5 salt加密
使用方式:
前端JQuery md5工具:https://github.com/emn178/js-md5
//首先先聲明鹽
var SALT="1C2t3p4a5i";
var password = md5(str);
服務端加密
服務端將拿到第一次md5加密的結果,這個密碼就是表單提交上來的密碼,我們需要在後端編寫第二道md5加密方式來加密表單傳來的密碼後再與
數據庫存儲的兩次md5加密的密碼
進行比較,相同才能登陸成功
使用方式:
-
方法一:使用依賴
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency>
使用其MD5方法
-
方法二:由於Spring可以說是自帶MD5算法 (DigestUtils類)
private static final String SALT = "1C2t3p4a5i";
private static String md5(String password){
return SALT.charAt(5)+DigestUtils.md5DigestAsHex(password.getBytes())+SALT;
}
好了,言歸正傳:爲啥他要使用兩次呢
因爲:
恐怖吧!一般能抓到我們加密數據的都是程序員,一次可能防不了他們,二次的話目前還行,但我估計… 可能以後要用到更多加密次數,或許MD5也要被淘汰