Apifox 请求时进行参数加密
前置操作的细节直接看下面的帮助文档,这里不在阐述
Apifox 帮助文档
前置操作代码
下面是 官方登录案例的
。
var cryptoJs = require("crypto-js");
const password2 = pm.request.body.formdata.get("password2")
const key = cryptoJs.enc.Utf8.parse('******');
const iv = cryptoJs.enc.Utf8.parse('******');
const encrypted = cryptoJs.AES.encrypt(password2, key, {
iv: iv,
mode: cryptoJs.mode.CBC,
padding: cryptoJs.pad.Pkcs7
});
console.log(encrypted.tostring())
pm.environment.set('password', encrypted.tostring());
下面是我自己的 前置加密代码
可以参考。
//获取body的json参数
const body = pm.request.body.raw
console.log(pm.request.body.raw)
//获取环境变量中的token
const token= pm.environment.get("token");
console.log(token)
//md5加密
const md5Key= CryptoJS.MD5(token).toString();
// 加密请求体
const key = CryptoJS.enc.Utf8.parse(md5Key);
const iv = CryptoJS.enc.Utf8.parse(md5Key.slice(0, 16));
const src = CryptoJS.enc.Utf8.parse(body);
const encrypted = CryptoJS.AES.encrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
const encryptData = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
pm.request.body.raw = encryptData
console.log(encryptData)
java 参考上面的加解密代码
- java使用Hutool工具包仿照加密代码
public class SecureUtil {
public static String encrypt(String token, String content) {
String key= DigestUtil.md5Hex(token);
String iv = StringUtils.substring(key, 0, 16);
AES aes = new AES("CBC", "PKCS7Padding",
// 密钥,可以自定义
key.getBytes(),
// iv加盐,按照实际需求添加
iv.getBytes()
);
// 使用Base64编码加密后的密文
return aes.encryptBase64(content);
}
public static String decrypt(String token, String content) {
String key= DigestUtil.md5Hex(token);
String iv = StringUtils.substring(key, 0, 16);
AES aes = new AES("CBC", "PKCS7Padding",
// 密钥,可以自定义
key.getBytes(),
// iv加盐,按照实际需求添加
iv.getBytes()
);
return aes.decryptStr(content);
}
}