postman/apifox加密接口data字段
·
背景
在测试过程中,有个接口需要加密后再传参请求,使用postman/apifox请求,请求方式post,body类型application/json,使用javascript编写加密逻辑
加密方式
首先请求体内data内容转为json 字符串,然后通过 AES/ECB/PKCS5Padding 算法把json字符串加密为byte[],再将加密结果byte[]转为hex字符串(小写)
示例:如请求体内,data字段未加密前内容为{"a":1,"b":2} 为待加密内容,加密key为:1122112233445566,加密结果: a93116455c46f357af37eced209f4138
实现过程
1、请求body如下
{
"command": "string ",
"sign": "string",
"stamp": 1,
"data":"{{encryptedData}}"
}
2、在前置处理对data进行加密处理,代码如下
const CryptoJS = require('crypto-js');
// data字段未加密前内容
const data = {
"a":1,"b":2
};
// 加密密钥
const keys = '112233445566';
// 将 data 转换为 JSON 字符串
const dataStrs = JSON.stringify(data);
// 使用 AES/ECB/PKCS5Padding 算法进行加密
function encryptData(dataStrs, keys) {
// 将密钥转换为字节
const key = CryptoJS.enc.Utf8.parse(keys);
// 将数据转换为 字节
const dataStr = CryptoJS.enc.Utf8.parse(dataStrs);
// 使用 AES/ECB/PKCS5Padding 算法进行加密
const encrypted = CryptoJS.AES.encrypt(dataStr, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
// 将加密结果转换为十六进制字符串(小写)
const encryptedHex = encrypted.ciphertext.toString().toLowerCase();
return encryptedHex;
}
// 调用加密函数
const encryptedData = encryptData(dataStrs, keys);
//将加密结果设置成临时变量,用于body引用变量
pm.variables.set("encryptedData", encryptedData);
// console.log(encryptedData);
更多推荐
所有评论(0)