如何在Postman中對報文進行AES+Base64加密請求

如何在Postman中對報文進行AES+Base64加密請求

相信做軟件開發的人,都少不了用一些好用的工具,Postman就是其中的一個。如果是拿Postman做一些非加密的HTTP請求,非常方便,也不需要額外的說明,但是如果要做一些複雜的請求,那就需要多多研究了。

本文是將工作中遇到的問題做個記錄,也方便有相同需要的人做個參考。網上也有關於使用AES進行報文加密的說明,爲什麼我還要寫呢?說實話,看了網上的幾篇文章,都試了下,沒一個弄成功的,所以還是自己仔細說明下,希望能給大家一點幫助吧。

關於Postman的基本用法這裏就不說了。

要實現AES+Base64加密,我們需要用到Postman中的Pre-request Script。Pre-request Script是指在發送報文前執行的腳本,用於對請求包中的各種參數做一些個性化的處理。

下面是我這邊親測可用的腳本內容。

var aesKey = "***";
if('POST' == request.method && 'product' == pm.environment.get("env")) {
    const echoPostRequest = {
        url: request.url
        method: 'POST',
        header:'Content-Type:application/json',
        body: encrypt(request.data, aesKey)
    };
    pm.sendRequest(echoPostRequest, function (err, res) {
        console.log("request body -> " + echoPostRequest.body);
        console.log("response body -> " + res.text());
        var result = decrypt(res.text(), aesKey);
        console.log("response body decrypted -> " + result);
    });
}

// AES 加密方法
// word是加密內容,keyStr是祕鑰
// ECB:加密算法,padding:對齊方式
// ciphertext:16進制加密,不加此方法就是Base64加密
function  encrypt(word, keyStr){
  var key  = CryptoJS.enc.Utf8.parse(keyStr);
  var srcs = CryptoJS.enc.Utf8.parse(word);
  console.log('content:'+word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});
  return encrypted.toString();
}

//解密
function decrypt(word, keyStr){
  //console.log('decrypt key:' + keyStr);
  var key  = CryptoJS.enc.Utf8.parse(keyStr);
  let base64 = CryptoJS.enc.Base64.parse(word);
  let src =  CryptoJS.enc.Base64.stringify(base64);
  var decrypt = CryptoJS.AES.decrypt(src, key, {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});
  return decrypt.toString(CryptoJS.enc.Utf8);
}

上面的腳本,判斷是否是現網環境product且是post請求,如果是,就對報文進行AES+Base64加密。在腳本里基於明文的請求包構造了一個加密請求,然後請求後臺後打印出相應的返回包,並對返回包做一次解密拿到明文並輸出。

除了Pre-request Script中的請求外,Postman還會繼續發送明文的請求,所以相當於點擊執行後發送了兩次請求,這是需要關注的點。目前還沒有想到其他合適的方法,如果有人知道怎麼只發送一次請求,而且請求能重複執行,麻煩回覆告知下,多謝。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章