- postman 加密&签名
-
根据
api
使用的加密方法进行加密var UserName="UserName"; pm.variables.unset(UserName); pm.variables.set(UserName, encrypt(pm.variables.get(UserName))); var PassWord="PassWord"; pm.variables.unset(PassWord); pm.variables.set(PassWord, encrypt(pm.variables.get(PassWord))); //AES 加密 function encrypt(text){ var key=pm.globals.get("AESKey"); var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(text), CryptoJS.enc.Utf8.parse(key), {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}); return encrypted.toString(); }
-
根据
api
签名规则生成sign
api sign 生成规则:请求参数(appid,sign 除外),key 转小写,根据key ASCII 码从小到大排序,
通过&拼接+secret(key1=value1&key2=value2secret),MD5加密,转大写var arr = new Array(); var num = 0; var data=[]; //获取参数传输方式 var mode=pm.request.body.mode; if (mode=="raw"){ data=JSON.parse(request.data) }else if (mode=="formdata"){ data=request.data; } //循环参数 for (var i in data) { //是否动态变量 var isDynamic=data[i]==`{{${i}}}`?true:false; arr[num] = { //key 转小写 key:i.toLowerCase() ,value:isDynamic?pm.variables.get(i):data[i] }; num++; } //根据key ASCII 码从小到大排序 //arr.sort(function(a,b){return a.key>b.key}); arr.sort(function(a,b){ if (a.key < b.key) return -1; else if (a.key > b.key) return 1; else return 0; }); var str=[]; //排除appid,sign var excludekey=["appid","sign"]; for (var j in arr) { var key=arr[j].key; if(excludekey.indexOf(key)<0){ str.push(key+"="+arr[j].value); } } //拼接字符串 console.log(str.join('&')+pm.globals.get("secret")); var signKey="sign"; pm.variables.unset(signKey); //MD5加密,转大写 pm.variables.set(signKey, CryptoJS.MD5(str.join('&')+pm.globals.get("secret")).toString().toUpperCase());
注意:将签名代码放入全局变量中,可以所有api 共用签名,调用方法如下:
eval(globals.sign);
-
postman 基础(三)
于 2022-01-18 19:03:37 首次发布