一、加密接口的測試
對稱式加密:DES,AES,Base64 可以加密也可以解密。
非對稱式加密:RSA 公鑰加密,私鑰解密,私鑰加密,公鑰解密
只加密不解密:MD5,SHA256
目前還沒有搭建完整的接口測試地址。但是有現成的腳本。
MD5
1 var user =CryptoJS.MD5("admin").toString().toUpperCase();
2 var pass =CryptoJS.MD5("123").toString().toUpperCase();
3 pm.globals.set("user",user);
4 pm.globals.set("pass",pass);
Base64
1 var user =CryptoJS.enc.Utf8.parse("admin");
2 var base64_user=CryptoJS.enc.Base64.stringify(user);
3
4 var pass =CryptoJS.enc.Utf8.parse("123");
5 var base64_pass=CryptoJS.enc.Base64.stringify(pass);
6
7 pm.globals.set("base64_user",base64_user.toString().toUpperCase());
8 pm.globals.set("base64_pass",base64_pass.toString().toUpperCase());
二、接口簽名sign
自定義加密算法。
是一種鑒權方式。復雜的鑒權方式。
接口簽名:就是使用appid,secret,nonce(流水號),timestamp時間戳,以及
params和body中的參數按照一定的額規則形成一個新的字符串,然后對這個字符串做加密之后得到sign簽名鑒權碼。
目的:
1.防止接口秘鑰泄漏。
2.防止接口被篡改。
3.防止接口被重復提交
怎么做?
1.獲取到所有的參數包括params和body
2.把所有的參數組成一個字符串:{a:1,b:2,c:3}
3.把appid和secret拼接到字符串前面,把nonece和timestamp拼接到最后:appid=admin&secret=123&username=admin&password=123&nonce=?
×tamp=?
4.對字符串進行AsccII排序
5.在對字符串多MD5加密得到sign
2 var api_id ="test";
3 var api_secret ="123";
4 var nonce = "235235235";
7 var timestamp = newDate().getTime();
8 console.log(timestamp);
9
11 varparams_value =pm.request.url.query.members;
12 console.log("params_value:"+params_value);
13
15 //JSON.parse()把字符串轉化成[object Object]對象。JSON.stringify()把對象轉化成字符串。
16 varbody_value =request.data;
17 console.log("body_value:"+JSON.stringify(body_value));
18
19 //5.將params里面傳輸的參數和body里面傳輸的參數組合到一個JSON對象。
20 for(vari=0;i<params_value.length;i++){
21 body_value[params_value[i].key] =params_value[i].value;
22 }
23console.log("allstring:"+JSON.stringify(body_value));
24
26 body_value=objectsort(body_value);
27 console.log("asccII_allstring:"+JSON.stringify(body_value));
28
29 //7.把json對象轉化成key=value&key=value這種格式
30 varnew_string ="";
31 for(varkey inbody_value){
32 new_string += key+ "=" + body_value[key] +"&";
33 }
34 new_string =new_string.substr(0,new_string.length‐1);
35 console.log("new_string:"+JSON.stringify(new_string));
36
37 //8.獲得完整的字符串
38 vartotal_string ="api_id="+api_id+"&"+"api_secret="+api_secret+"&"+new
_string+"&"+"nonce="+nonce+"&"+"timestamp="+timestamp;
39 console.log("total_string:"+JSON.stringify(total_string));
40
41 //9.獲得sign
42 sign=CryptoJS.MD5(total_string).toString().toUpperCase();
43 console.log("sign="+sign);
pm.globals.set("sign",sign);
45
46 //把對象的key升序排序函數
47 functionobjectsort(obj){
48 var new_key =Object.keys(obj).sort();
49 var arr ={};
50 for(vari=0;i<new_key.length;i++){
51 arr[new_key[i]] =obj[new_key[i]];
52 }
53 returnarr;
54 }