由于项目由部分参数使用到RSA加密,则百度查找文档,参考了这个文档:https://www.jianshu.com/p/2eb5cfb782cb。但总是提示There was an error in evaluating the Pre-request Script: Error: forge is not defined。
于是在环境变量增加参数forgeJS和值,值是从以下链接访问获取:https://gitee.com/lzq1357/various/raw/master/forge_min.js

image.png
以下是新增请求,参数中有个phone使用了rsa加密,则在Tests中编写rsa加密方式得到phone参数。

image.png
Tests参数如下:
//--------------以下为需要加密的内容,可以根据需求定义多个------------------//
var clearText = "13800138000"; //对应{{rsaBody}}的明文
// var clearText = '{"arg1":"def","arg2":123,"arg3":7.89}';
//------------------------------需要复制公钥到这里---------------------------------------//
const encrypt_key = '(密钥复制到此处)';
const forge_url = 'https://gitee.com/lzq1357/various/raw/master/forge_min.js';
//forge_min.js来自:https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js
//---------------------------------------------------------------------//
function encryptRsa(encrypt_key, clearText){
console.info('cleartext: ' + clearText);
//注意此处上下的BEGIN PRIVATE KEY不要删除,框架自带的
const public_key = '-----BEGIN PUBLIC KEY-----\n'
+ encrypt_key
+ '\n-----END PUBLIC KEY-----';
var publicKey = forge.pki.publicKeyFromPem(public_key);
var buffer = forge.util.createBuffer(clearText, 'utf8');
var bytes = buffer.getBytes();
var encryptedText = forge.util.encode64( publicKey.encrypt(bytes, 'RSAES-PKCS1-V1_5', {
md: forge.md.sha256.create(),
mgf1: {
md: forge.md.sha1.create()
}
})
);
console.info('encryptedText: '+ encryptedText);
return encryptedText;
};
// 第一次运行时从网络加载forgeJS,会导致请求失败
if(!pm.globals.has('forgeJS')){
console.log('request forge.js from ' + forge_url);
pm.sendRequest(forge_url, function (err, res) {
if (err) {
console.error(err);
} else {
console.info("request forgs.js: Succeed, please try again");
pm.globals.set('forgeJS', res.text());
}
}
);
}
eval(pm.globals.get('forgeJS'));
//------------------以下内容根据需要修改定义,可以加密多个字段------------------------//
var encryptedText = encryptRsa(encrypt_key, clearText);
postman.setEnvironmentVariable("rsaBody", encryptedText); //rsaBody对应Body中{{}}