MD5加密簽名
爲了數據的
安全性、完整性
,防止數據在傳輸過程被篡改。當post
請求會加上md5簽名
來校驗數據,多一個sign標籤,
sign的值
就是md5
生成的字符串
ps: 項目上線加班,有點疲憊哈。趁某些同事再改bug,抽點時間寫下吧。
效果圖
1. 下載md5.js
文件
注意: 在 js
可以直接使用, 如果在小程序
裏面,修改以下兩點
, 如下圖
說明: 在小程序
中使用修改步驟
去掉
最外層(function ($) {}
包裹,其次左圖
備註判斷
去掉。- 把
方法
名爲md5
, 使用export
導出。【見右圖
】
2. MD5加密數據
數據簽名後
再發送請求, 你看會帶請求數據中多一個sign
字段。
- 定義
key
- 把需要簽名的數據進行
排序
【排序的格式和後端定義好】 - 拼接
數據
+key
- 調用
md5
方法加密 - 發送請求
說明 項目中會把簽名代碼
和發送網絡請求
進行封裝,通過參數傳遞。
registerTap() {
let that = this;
let params = {
mobile: this.mobile,
loginPwd: this.password,
}
var appkey = 'VerificationSign2019'; //key是自定義
var newObj = this.objKeySort(params);
console.log('需要簽名數據:', newObj); //{mobile: "15899999999", loginPwd: "123456"}
let connects = '';
for (let item in newObj) {
connects += newObj[item];
}
// 拼接格式登錄: 15899999999123456VerificationSign2019 進行加密
connects += appkey;
console.log('拼接格式後', connects); //15899999999123456VerificationSign2019
// md5加密
params.sign = md5(connects); //4576c0b7e32f078d8fb8297e305a9151
//發送請求
let url = `${this.url}/invitationRegister`
that.$http.post(url, params, {
emulateJSON: true
}).then((res) => {
console.log(res);
let datas = res.body;
})
},
3. 排序
默認是
升序
//json數據排序
objKeySort(obj, typesort = 'sort') { //排序的函數
if (typesort == 'sort') {
var newkey = Object.keys(obj).sort(); //升序
} else {
var newkey = Object.keys(obj).sort().reverse(); //降序
}
//先用Object內置類的keys方法獲取要排序對象的屬性名,再利用Array原型上的sort方法對獲取的屬性名進行排序,newkey是一個數組
var newObj = {}; //創建一個新的對象,用於存放排好序的鍵值對
for (var i = 0; i < newkey.length; i++) { //遍歷newkey數組
newObj[newkey[i]] = obj[newkey[i]]; //向新創建的對象中按照排好的順序依次增加鍵值對
}
return newObj; //返回排好序的新對象
}