- 之前的专栏文章中,写过使用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格式:
- 解密后的数据也可以展示在响应结果的Visualize选项卡下。具体方法参考文章:Postman进阶篇(十三)-接口响应可视化(Visualize)及在Visualize中显示解密后的响应
postman系列文章目录:
https://blog.csdn.net/weixin_40883833/article/details/126452017
—————————————————————————————————
postman系列文章内所使用的示例文件已经上传到了本人运营公众号【软件测试必备技能】
有需要可点击文章下发二维码,前往领取~