postman-rsa加密

由于项目由部分参数使用到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中{{}}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容