加密算法获取Token
https://blog.csdn.net/u010048119/article/details/126049523
场景:
自动化测试需要通过数据加密计算secret, 接口传递才能获得token
目标:
使用接口给的 spk(公钥) 和secret(加密内容) 加密, 接口传递获取token
T任务:
python实现RSA工具类实现公钥加密
A实现:
- 编码: 对spk和secret进行编码为byte和python对象
- 加密: 使用rsa的加密算法进行加密
- 解码: 将加密后的secret解码为str接口传递
import base64
import rsa
class RSAUtiles():
@classmethod
def rsaEncrypt(self, msg: str, public_key: str):
"""
:param public_key: 非pem格式 str
:return:
"""
# 1.1公钥字符串添加为 PEM格式
public_key_str_pem = f"-----BEGIN PUBLIC KEY-----n{public_key}n-----END PUBLIC KEY-----"
# 1.2PEM格式转化为byte格式
public_key_byte = public_key_str_pem.encode('utf8')
# 1.3 pem_str 转化为 PublicKey对象
public_key = rsa.PublicKey.load_pkcs1_openssl_pem(public_key_byte)
# 2.msg str转化为byte格式
msg_byte = msg.encode('utf8')
# 3.加密
# rsa库进行加密
secret_byte = rsa.encrypt(msg_byte, public_key)
# byte2uft8
secret_str = base64.b64encode(secret_byte).decode()
return secret_str
if __name__ == '__main__':
import requests
base_url = 'http://10.40.38.71:88'
path = '/api/ec/dev/auth/regist'
headers = {
'appid':'xxxxxx'
}
rsp = requests.post(url=base_url path, headers=headers)
secret = RSAUtiles.rsaEncrypt(rsp.json()['secret'], rsp.json()['spk'])