postman 密码rsa加密登录-2加密密码

上一篇讲了获取公钥,将环境准备好之后,在登录接口的Pre-request Scrip 里,使用公钥进行加密后在正常登录。本文采用的方案是使用第三方模块forge.js来实现加密。

1、环境准备好,系统git 和node都OK。下载forge.js

bash 复制代码
git clone https://github.com/digitalbazaar/forge.git

进入下载的路径下进入bash进行安装

bash 复制代码
npm install

安装遇到的问题:

问题一:

Error: EPERM: operation not permitted, mkdir 'D:\Program Files\nodejs\node_global\node_modules

是因为node是admin权限,用户无该文件权限。解决方法nodejs文件右键属性,在安全里修改文件权限,用户的权限全加,重新安装不再报这个错。

问题二:

Error: error:0308010C:digital envelope routines::unsupported

是因为node.js版本过高的原因,卸载后重新安装V17以下版本,重新安装不再报错。

2、Pre-request Scrip脚本如下

修改明文密码后,进行加密即可。有的文章提到加密前,密码后还加了时间戳之类的信息,这个就看具体的系统是如何实现的,具体可以咨询开发同事。

javascript 复制代码
var clearText = '123456'
var public_key ='-----BEGIN PUBLIC KEY-----\n'+
                pm.environment.get("pubKey") + '\n' +
                '-----END PUBLIC KEY-----'

//postman自带的加密函数是cryptoJS,无法满足;因此需要引用第三方库forge.js
//调用forge.js服务的地址:https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js打不开时,就用https://lzq1357.gitee.io/various/forge_min.js
const forge_url = "https://lzq1357.gitee.io/various/forge_min.js"
//定义Rsa加密函数encryptRsa,其中public_key为公钥,clearText为所需要加密的内容

function encryptRsa(public_key,clearText){
    console.info('clearText:' + clearText)
    //公钥转化为pem格式
    var publicKey = forge.pki.publicKeyFromPem(public_key)
    //创建缓冲区,所需要加密内容设置编码格式
    var buffer = forge.util.createBuffer(clearText, 'utf8')
    //转化为字节
    var bytes = buffer.getBytes()
    //publicKey.encrypt(bytes,'RSAES-PKCS1-V1_5')加密函数,把明文使用'RSAES-PKCS1-V1_5'加密成密文
    //forge.util.encode64()把加密后的密文按encode64进行编码输出
    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 forge.js: Succeed,please try again")
            pm.globals.set('forgeJS',res.text())
        }
    });
    return;
};
//设置全局变量forgeJS
eval(pm.globals.get('forgeJS'))
//定义加密,调用Rsa加密函数encryptRsa
var encryptedText = encryptRsa(public_key,clearText)
//控制台输出加密
console.log(encryptedText)
//第三部分------设置环境变量password
pm.environment.set("password",encryptedText)

3、下发登录接口 ,查看接口返回里,已经有系统的cookie拉。

相关推荐
daopuyun3 小时前
技术最前沿|最新版软件安全测试工具Fortify 安全规则库26.1更新内容
测试工具·安全
007张三丰10 小时前
软件测试专栏(7/20):接口测试全攻略:Postman+Newman实现API自动化
自动化·lua·接口测试·postman·api测试·newman
Wpa.wk15 小时前
IDE中配置Git常见操作
ide·经验分享·git·测试工具
海特伟业1 天前
蒸汽阀门内漏检测仪-疏水器内漏检测仪-让蒸汽阀门疏水器内部泄漏由被动抢修转变为主动预防
测试工具
Saniffer_SH2 天前
【每日一题】PCIe链路协商的时候进入Polling compliance如何排错?
服务器·人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·自动化
张永清-老清2 天前
每周读书与学习->Jmeter中如何使用Bean Shell脚本(二)Bean Shell的基础语法之变量与数据类型
学习·测试工具·jmeter·压力测试·性能调优·jmeter性能测试·性能分析
0和1的舞者2 天前
高并发论坛系统:单元测试 + 接口自动化 + 性能测试 + CI/CD 全链路测试报告
java·测试开发·测试工具·jmeter·pytest·测试·测试报告
敷衍一下X2 天前
Selenium元素定位
python·selenium·测试工具
汽车仪器仪表相关领域2 天前
SSI-4 PLUS 简易传感器接口:多场景采集 “即插即用” 的终极解决方案
功能测试·测试工具·单元测试·压力测试·可用性测试·模块测试·安全性测试