python使用pycryptodome模块实现RSA加密

文章讲述了在接口自动化测试中,如何处理登录接口的加密账号密码,通过获取验证码接口的RSA公钥对明文进行加密并转换为Base64格式的方法,以及使用pycryptodome库实现的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

我们在做接口自动化测试时,可能会有以下场景: 

请求登录接口,但登录接口中的账号密码是需要加密的,这时直接用明文将会请求失败;

发现账号密码是根据获取验证码接口中的RSA公钥来加密的(RSA加密流程:https://blog.youkuaiyun.com/u013263917/article/details/102674345

36dc347a84be4def87183b23880b6b7b.png

 

6ac06ad5fbd74e3dbac04a7ad045a8aa.png

 

大致思路如下:

从获取验证码接口响应数据中拿到RSA公钥,用该公钥给账号密码明文加密,并转换成base64格式,就可以用来请求登陆接口了。

安装pycryptodome库:

pip install pycryptodome

代码示例:

from Crypto.PublicKey import RSA
import base64
from Crypto.Cipher import PKCS1_v1_5

def rsa_encryption(public_key_str,key):           #public_key_str为RSA公钥,key为需要加密的明文
    public_key = RSA.import_key(public_key_str)            #读取公钥
    cipher = PKCS1_v1_5.new(public_key)                    #创建加密器对象
    text = cipher.encrypt(key.encode())                    #加密
    ciphertext = base64.b64encode(text).decode('utf-8')    #对数据进行base64编码
    return ciphertext

#调试:
public_key_str = '-----BEGIN RSA PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzC/hT2LIo4qKfTzBzmpe\nY5/cPTkvfB8x9X66lNA4KDfEcEg2BZ4RP0XO7Cjh/G7BebFgxlI5p6/0NarRi3Xc\nwLdXKbiaoUOjn6BeZnpHfUNMmvfR7asGHJfqhliqWwJdB/bD7oOamgmxbDCrfPlJ\nPxqoBpngA2zZLiIcLNF+jYoF5I6DVEVJq68aL+VeErr0lESapFjFusSEcTP9hoz8\nspAxhlfBKg+FdIdVIk9G2jRAhq9/nVvA2g0ALu1cmrn2gPXSamXm7DmRmpNGwej0\nZfzvGUH96NoxsSmCkbt7ZI+fMIF7iUkdFyN0eh6FkZEZ61trG6BTwVStZkeaVOpa\nCQIDAQAB\n-----END RSA PUBLIC KEY-----\n'
key = 'username"

rsa_encryption(public_key_str,key)

结果:

183fe5d4bfff4040a018e761adf29c9d.png

 

以上例子来源于我的项目实战,有遇到相同问题的可以借鉴。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值