常用js數據加密
- 原生js已經支持base64加密及解密
//加密
window.btoa(this.shop)
//解密
window.atob(this.shop)
但是,window.btoa並不支持中文加密,可以使用曲線救國的方法
//加密
window.btoa(encodeURIComponent(this.company_name))
//解密
decodeURIComponent(window.atob(this.company_name))
不過,使用encode中文轉碼在編譯真的是‘曲線救國了’!
- md5加密
MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),用於確保信息傳輸完整一致
常用js md5庫
https://github.com/blueimp/JavaScript-MD5
npm install crypto-js
//使用crypto
//md5.js
import crypto from 'crypto';
export default ({
//將對象以‘鍵名=鍵值’方式存儲到數組中,再以‘&’連接並加密,
getSign(params){
let objsort = this.objKeySort(params);
let arr = [];
for (let i in objsort) {
arr.push((i + "=" + objsort[i]));
}
var md5 = crypto.createHash("md5");
md5.update(arr.join("&")); //需要加密的密碼
return md5.digest('hex').toUpperCase(); //password 加密完的密碼
},
//排序的函數
objKeySort(obj) {
//先用Object內置類的keys方法獲取要排序對象的屬性名,再利用Array原型上的sort方法對獲取的屬性名進行排序,newkey是一個數組
var newkey = Object.keys(obj).sort();
var newObj = {};//創建一個新的對象,用於存放排好序的鍵值對
for (var i = 0; i < newkey.length; i++) {//遍歷newkey數組
newObj[newkey[i]] = obj[newkey[i]];//向新創建的對象中按照排好的順序依次增加鍵值對
}
return newObj;//返回排好序的新對象
}
})