原文地址:https://blog.csdn.net/hcwbr123/article/details/70885388
分享轉載
現象:
在登錄頁面有時候需要將用戶輸入的密碼經過加密之後再傳入後臺.
- 1
- 2
解決辦法:
1:首先在頁面引入md5的js,在前臺框架amazeui中就攜帶!先下載amazeui,解壓將目錄複製到項目的WebRoot下。
- 1
- 2
2:在jsp頁面引入amazeui的MD5js![這裏寫圖片描述]
- 1
- 2
3:頁面設置錶帶的提交按鈕爲點擊事件
- 1
- 2
4:在點擊事件中將密碼加密然後將密碼框的密碼變爲加密之後的密碼。最後在提交。這就有時候輸入完密碼之後密碼框的字符會變得很長的原因!
注:判斷一下如果此時密碼的長度爲32位說明密碼就是經過加密可以直接提交。
- 1
- 2
- 3
5:在後臺接收到密碼字符串之後就可以進行比較了,如果數據庫存的本來就是經過MD5加密的字符串。那就直接拿出來比較。如果數據庫存的依舊是原始密碼,取出來也經過MD5然後在比較;如下取出密碼和用戶名進行MD5加密算法之後和頁面的值比較
- 1
- 2
6:MD5加密算法的類:
- 1
- 2
這樣就完成了頁面輸入密碼經過加密之後才傳入後臺。這裏使用的是用戶名+密碼的加密字符!
代碼:
public static String makeMD5(String plainText) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
//32位加密
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}