zoukankan      html  css  js  c++  java
  • postman prerequest动态加密数据构造

    app与服务端通信过程中有时需要加密,这样受保护的body更不易被破解。

    例子:

      工作中有遇到类似于http://test.baidu.com/ad/conf?m2=xx&ch=xxxxx&sign=xxx的请求,通过postman、jmeter在进行请求时由于无法直接获取到sign值,无法顺利走通接口,这时候下边的代码就work了。

    //签名规则:sign=md5(key1=value1&key2=value2&secret)
    var secret = "abcde";//secret
    var newtimestamp=Math.round(new Date().getTime());
    console.log("newtimestamp:"+newtimestamp);
    
    //请求参数名按照ASCII码升序排序
    keys = Object.keys(request.data).sort(); 
    
    //拼接待签名字符串
    var str = [];
    for (var p = 0; p < keys.length; p++) { 
        if(keys[p] == "sign" || request.data[keys[p]] === ""){
            // == 宽松相等,隐性类型转换,值相等,返回true;
            // === 严格相等,值和类型都相等,返回true
            continue;
        }
        if(keys[p] == "qbtime"){
            str.push(keys[p] + "=" + newtimestamp);
            continue;
        }
        str.push(keys[p] + "=" + request.data[keys[p]]);
    }
    
    var presign = str.join("&");
    presign = presign+"&"+secret; //添加secret
    console.log("presign:"+presign);
    var signSecret = CryptoJS.MD5(presign).toString();  //md5
    console.log("signSecret:"+signSecret);
    
    //重设环境变量
    pm.environment.unset("sign");
    pm.environment.unset("timestamp");
    pm.environment.set("sign", signSecret);
    pm.environment.set("timestamp", newtimestamp);
  • 相关阅读:
    第三周作业
    第二周作业 编程总结
    编程总结二 求最大值及其下标
    编程总结一 查找整数
    第十周课程总结
    第九周课程总结&实验报告(七
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第六周&java实验报告四
    第五周的作业
  • 原文地址:https://www.cnblogs.com/mncasey/p/11556081.html
Copyright © 2011-2022 走看看