Postman进阶篇(五)-实战:Test script解密接口返回结果(AES)

  • 之前的专栏文章中,写过使用Pre-request Script加密请求参数。(文章地址:实战:pre-request script加密接口请求参数(AES、MD5)
  • 接口请求参数可能是加密的,返回结果也可能是加密的。想要查看接口返回结果,每次都需要解密,非常的繁琐。
  • Test Script在请求结果返回之后运行,适合用来处理返回结果解密的问题。这里提供两种解决方案。
    本篇文章的代码均由JavaScript编写

AES解密

  • 与加密方式一样,解密一样要用到crypto-js
    (crypto-js是JavaScript中的一个加密库)
  • 解密后的结果最后输出在控制台。
    (专栏之前也有介绍过控制台,文章地址:console控制台

完整代码如下:

var body = responseBody
var AES_key= "QWERTYUIOPASDFGH" //秘钥
var ECBOptions = {
    
    mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7};
var AesSecert = CryptoJS.enc.Utf8.parse(AES_key);
var data_dec = CryptoJS.AES.decrypt(body, AesSecert, ECBOptions)
var data_dec_str = data_dec.toString(CryptoJS.enc.Utf8)
console.log("解密之后的结果:",data_dec_str)

在这里插入图片描述

代码解释

  • CryptoJS.AES.decrypt()是AES解密方法,对应的还有AES加密方法CryptoJS.AES.encrypt()

  • 首先,获取到接口返回结果。
    (在postman中responseBody可以直接调用,调用这个变量会将接口response以字符串的形式返回)

    var body = responseBody
    
  • 设置秘钥

    var AES_key= "QWERTYUIOPASDFGH" //秘钥
    
  • 设置偏移量、模式等设置

    var ECBOptions = {
          
          mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7};
    
  • 秘钥为Utf-8格式,需要先解码为十六进制数

    var AesSecert = CryptoJS.enc.Utf8.parse(AES_key);//秘钥
    
  • 调用crypto-js中解密的方法

    var data_dec = CryptoJS.AES.decrypt(body, AesSecert, ECBOptions)
    
  • 再将解密后的结果转为字符串且为UTF-8格式

    var data_dec_str = data_dec.toString(CryptoJS.enc.Utf8)//AES解密
    
  • 解密的最后结果在控制台输出

    console.log("解密之后的结果:",data_dec_str)
    

输出后的结果如下:在这里插入图片描述
也可以将结果转为json格式,使用JSON.parse()方法,将字符串转为JSON格式

console.log("解密之后的结果:",JSON.parse(data_dec_str))

json格式:
在这里插入图片描述

postman系列文章目录:
https://blog.csdn.net/weixin_40883833/article/details/126452017
—————————————————————————————————
postman系列文章内所使用的示例文件已经上传到了本人运营公众号【软件测试必备技能】
在这里插入图片描述
有需要可点击文章下发二维码,前往领取~
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40883833/article/details/126714114