postman發送HTTP請求自動生成MD5/SHA1簽名


POSTMAN是常用的接口測試工具

如果需要生成簽名之類的動態變量,可以通過Pre-request Script腳本來實現

通俗說:它是js的語法,同時內置了postman的方法,可以輕松實現各種算法,截圖如下:

 

MD5簽名

先模擬一個簡單的例子,從body中獲取變量,然后手工拼接並生成MD5值

代碼如下:

/**
 * 通過request.data獲取body的內容,這個是postman內置變量
 * 常用內置參數如下:
 * request 獲取請求的參數,包括頭和請求體
 * responseHeaders 返回值的header
 * responseBody 返回值的body
 * responseCode 返回值的http code
 */
var params = request.data;

/**
 * MD5加簽規則:
 * 1、根據key排序(這里就直接根據順序拼接了)
 * 2、如果value不為空,就拼接如下:key1=value1&key2=value2 生成原串
 * 3、原串后+鹽值,比如salt=shengpay,最終的摘要串=key1=value1&key2=value2shengpay
 * 4、消息摘要,並將結果轉為大寫
 * 
 */
//連接符
var join = '&';
//鹽值
var MD5_SALT_SUFFIX = "shengpay";
var md5salt = params.subMerchantNo + MD5_SALT_SUFFIX;

var md5String = "orderId=" + params.orderId + join +
    "subMerchantNo=" + params.subMerchantNo + join +
    "terminalId=" + params.terminalId + md5salt;
console.log("md5String---->" + md5String);

var md5 = CryptoJS.MD5(md5String).toString().toUpperCase(); //MD5摘要后並轉換為大寫

console.log("md5 digest---->" + md5);

//放入環境變量
//pm.environment.set("sign_message",md5)
postman.setGlobalVariable("md5msg", md5);

  

賦值:

運行時候,打開控制台,就可以看到console.log()在控制台打印的日志啦

代碼很簡單,直接看注釋即可,唯一需要提一下,這里MD5簽名使用到了CryptoJS類庫,這是js的一個加解密的類庫,支持AES、RSA等各種加解密算法;

 

SHA1簽名

這里稍微復雜點,從body獲取參數放入數組,然后排序,然后根據規則拼接字符串,最后生成SHA1簽名串並使用十六進制編碼;

直接看代碼:

/**
 * 通過request.data獲取body的內容,這個是postman內置變量
 * 常用內置參數如下:
 * request 獲取請求的參數,包括頭和請求體
 * responseHeaders 返回值的header
 * responseBody 返回值的body
 * responseCode 返回值的http code
 */
var params = request.data;

//body中參數放入數組
var list = [params.subsystemId,params.clientId,params.account,params.timestamp];
console.log("list---->" + list);

// 字段排序:這里建議使用默認的排序,優先比較字符的第一個,相同則比對第二個...
//list.sort(function(a, b){
    //return b-a;  //數字的排序
//    return b.localeCompare(a); //字符串排序
//});
list.sort();
console.log("list ---->" + list);

//字段重新組裝拼接
var tmp='';
for(var i=0;i<list.length;i++){
    tmp += list[i];
}
console.log("tmp ---->" + tmp);

//生成簽名串:這里使用SHA1算法並使用十六進制編碼
//CryptoJS-為JavaScript提供了各種各樣的加密算法
//作者:CryptoJS<>(https://code.google.com/p/crypto-js/)
var signHmacSHA1=CryptoJS.SHA1(tmp).toString(CryptoJS.enc.Hex).toUpperCase();
console.log("sign ---->" + signHmacSHA1);

//放入環境變量
//pm.environment.set("sha1msg",signHmacSHA1)
postman.setGlobalVariable("sha1msg", signHmacSHA1);

 


免責聲明!

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



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