首先需要注意的一點是,密碼的加密應該是在頁面完成的,因爲傳輸的過程中,密碼明文有可能會泄露出去。
然後要說明的就是,雖然在頁面加密密碼,加密算法暴露了,但是有些加密算法,比如MD5,即使知道加密算法,知道密文也很難得出明文是什麼。
MD5是使用散列函數進行密碼加密的,加密是單向的,如果不是兩段相同的明文,結果很難一致。
網上有MD5的解密工具,但是那種工具一般都是查字典出來的,也就是說那種工具會在後臺進行查找,如果它的數據庫裏沒有明文,它需要重新計算來得到明文。
與此同時,可以使用兩次或多次MD5加密的方式提高安全性。
Crypto下載地址:https://code.google.com/archive/p/crypto-js/downloads
Crypto的API:https://code.google.com/archive/p/crypto-js/
實例代碼:
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8"/>
<title></title>
<script src="./md5.js"></script>
<script >
function escape(){
var code = CryptoJS.MD5(mainText.value);
var tmpdiv = document.createElement("div");
tmpdiv.innerHTML="\""+mainText.value+"\"" + "    "+code;
document.getElementById("main").appendChild(tmpdiv);
}
</script>
</head>
<body id="main">
<input id="mainText" />
<button onclick="escape()" type="button" >test</button>
</body>
</html>
補充:我一開始懷疑過MD5的安全性,所以做了一下實驗:
加密:
test:
123456Seven
yufeng0023
yufeng0023.23
修改一個字符帶來的差異:
"yufeng0023.23" 5f8a31f74a397f629da7d9815474aeb0
"yufeng0023.2" 071730528ffbae37516fc053cfe9ff77