接口加密-接口鑒權sign


一、加密接口的測試

對稱式加密: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=?

&timestamp=?

4.對字符串進行AsccII排序

5.在對字符串多MD5加密得到sign

1 //1.獲取到apiid和apisecret

2 var api_id ="test";

3 var api_secret ="123";

4 var nonce = "235235235";

6 //2.獲得時間戳

7 var timestamp = newDate().getTime();

8 console.log(timestamp);

9

10 //3.獲取到params里面傳輸的參數

11 varparams_value =pm.request.url.query.members;

12 console.log("params_value:"+params_value);

13

14 //4.獲得body里面傳輸的參數,

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

25 //6.把allstring的key按照升序排列

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 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM