如何在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还会继续发送明文的请求,所以相当于点击执行后发送了两次请求,这是需要关注的点。目前还没有想到其他合适的方法,如果有人知道怎么只发送一次请求,而且请求能重复执行,麻烦回复告知下,多谢。

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值