前言
请求接口时,部分参数需要加密传输,如账号、密码这些敏感信息,这时需要用到加密处理,以下的处理结合yaml文件,将yaml文件中的账号、密码进行加密
一、yaml文件
login.yml
Login_request_data:
url: http://192.168.0.1:4444/api/v1/login
data:
password: admin123
username: admin
#url、账号、密码换成你们公司的
二、加密函数
def encrypt(
password,
key = '找开发要',
):
"""
对传入参数加密处理
:param password:密码
:param key:公钥
:return: 加密后的数据
"""
public_key = '-----BEGIN PUBLIC KEY-----\n' + key + '\n-----END PUBLIC KEY-----'
rsakey = RSA.importKey(public_key)
cipher = Cipher_pkcs1_v1_5.new(rsakey)
cipher_text = base64.b64encode(cipher.encrypt(password.encode()))
return cipher_text.decode()
三、使用加密登录
import requests
import yaml
from ToEncrypt import encrypt
def read_yaml():
f = open('login.yml', 'r', encoding='utf-8')
data = yaml.load(f,Loader=yaml.FullLoader)
return data
def RSA_User():
'''加密账号'''
name = encrypt(read_yaml()['Login_request_data']["data"]['username'])
return name
def Rsa_Pwd():
'''加密密码'''
psw = encrypt(read_yaml()['Login_request_data']["data"]['password'])
return psw
def Login():
'''登录获取返回结果'''
url = read_yaml()['Login_request_data']['url']
rsa_data = read_yaml()['Login_request_data']['data']
rsa_data ['username'] = RSA_User()
rsa_data ['password'] = Rsa_Pwd()
r = requests.post(url=url,json=rsa_data)
if r.json()['status'] == 2000:
print(r.json())
return r.json()
else:
print(r.json())
if __name__ == '__main__':
Login()
返回结果: