Postman完成RSA加密并使用加密所得鉴权

本文介绍了如何在Postman中处理RSA加密的接口鉴权问题。由于Postman自身不支持RSA加密,因此需要借助ForgeJS库在pre-request-script中编写代码进行加密。文章详细讲解了从下载Forge到加密并设置全局变量的步骤,强调了需要项目开发提供的公钥,并提示了可能遇到的问题和解决方法。
摘要由CSDN通过智能技术生成

接口的鉴权方式除了token以外,还会遇到使用RSA加密和签名来处理的请求参数。在使用python完成接口自动化时,可以很方便的利用第三方库rsa,利用需要加密的字节信息和公钥对象用rsa.encrypt生成加密文本,从而得到我们所需要的加密后的信息。

postman相比python就稍微比较复杂了,因为postman作为接口测试工具,多数功能测试者在用,但postman本身不支持rsa加密,在pre-request-script中需要写一定的代码,且需要forgeJS协助。如果不懂代码,那建议寻求开发协助,或者一步步按照以下方式操作即可。


解决方案

      在pre-requests-script中,添加forge模块代码到全局变量中,提取的全局变量(字符串类型)通过eval函数使其在当前环境中执行,利用模块中提供的生成公钥对象和加密方法加密。

 

本次加密得到的产出物,设置到全局变量中

1、token前50位+时间戳 ,加密后得到的sign

2、时间戳timestamp

 


1、下载forge(使用gitbash)

git clone https://github.com/digitalbazaar/forge.git

2、安装f

Postman可以通过使用前置脚本来实现RSA加密。在前置脚本中,你可以使用JavaScript的RSAKey库或者pycryptodome库来进行RSA加密操作。 如果你选择使用JavaScript的RSAKey库,你可以按照以下步骤进行操作: 1. 在Pre-request-Script页签中,引入RSAKey库。你可以使用以下代码来获取RSAKey库: ``` if (!pm.globals.has("forgeJS")) { pm.sendRequest("https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js", function (err, res) { if (err) { console.log(err); } else { pm.globals.set("forgeJS", res.text()); } }) } else { eval(postman.getGlobalVariable("forgeJS")); } ``` 2. 获取公钥,并创建RSA对象: ``` var rsa_public_key = pm.globals.get("RSA"); var publicKey = forge.pki.publicKeyFromPem(rsa_public_key); ``` 3. 使用RSA对象对请求参数进行加密,并将加密结果保存在环境变量中: ``` var encryptedText = forge.util.encode64(publicKey.encrypt(pm.environment.get("raw_sword"), 'RSAES-PKCS1-V1_5', { md: forge.md.sha1.create(), mgf1: { md: forge.md.sha1.create() } })); pm.environment.set("sword", encryptedText); ``` 如果你选择使用pycryptodome库来进行RSA加密,你可以按照以下Python代码进行操作: ```python from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 # 定义待加密的数据 data = "hello, world!" # 读取公钥文件,并创建RSA对象 with open('public.pem', 'rb') as f: key = RSA.import_key(f.read()) rsa = PKCS1_v1_5.new(key) # 对数据进行RSA加密 encrypted_data = rsa.encrypt(data.encode('utf-8')) # 输出加密后的数据 print(encrypted_data.hex()) ``` 以上是使用Postman实现RSA加密的方法,你可以根据自己的需求选择适合的方法进行操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值