今天對(duì)項(xiàng)目的登陸做優(yōu)化的時(shí)候鸵荠,為了防暴力破解簸呈,要對(duì)賬號(hào)密碼等進(jìn)行加密榕订,后臺(tái)小哥向我推薦了這個(gè)crypto.js,下面總結(jié)一下用法蝶棋。
1.新建一個(gè)js文件卸亮,封裝加密方法
//首先聲明兩個(gè)變量,加密的時(shí)候要用到玩裙,要和后臺(tái)溝通兼贸,保持一致
const AES_KEY = '0D7FB71E8EC31E97';
const IV = 'TRYTOCN394402133';
function encrypt(params) {
var key = CryptoJS.enc.Utf8.parse(AES_KEY);
var iv = CryptoJS.enc.Utf8.parse(IV);
var jsonData = JSON.stringify(params);
//下面的data參數(shù)要求是一個(gè)字符串,第一次用的時(shí)候我直接傳遞的是一個(gè)對(duì)象吃溅,出現(xiàn)了錯(cuò)誤溶诞,要轉(zhuǎn)換成字符串
var data = CryptoJS.enc.Utf8.parse(jsonData);
var encrypted = CryptoJS.AES.encrypt(data, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString();
return encrypted;
}
然后就可以使用了,比如要加密的表單是下面的格式:
var params = {
"txtValid":"1234",
"txtPwd":"admin",
"txtName":"admin",
"timestamp":"123456789"
};
encrypt(params)//YLi/+YY1Ojd14ybMu6j68OZhO4HuDHAkE/iYEtqLly/RS3oIvxjca4IGUp8wM6MaxCj2ju7pMg20OGhWrl+SsIkg1CYR6p29FA2OJJLKNUY=
解密的話(huà)也很簡(jiǎn)單决侈,用下面的方法:
function decrypt(params) {
//解密
var key = CryptoJS.enc.Utf8.parse(AES_KEY);
var iv = CryptoJS.enc.Utf8.parse(IV);
var decrypt = CryptoJS.AES.decrypt(params, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
return decrypt;
}
然后因?yàn)轫?yè)面的請(qǐng)求可以看到j(luò)s源碼螺垢,所以對(duì)這個(gè)js文件進(jìn)行了混淆加密,這個(gè)很簡(jiǎn)單赖歌,百度一下有很多轉(zhuǎn)換工具枉圃。