前阵子把公司的接口放到自己刚写的接口自动化框架中时,遇到一个接口,要把请求数据中的某一个字段用RSA加密。研究了一波,发现用一个第三方库就行,趁着没忘赶紧整理文章把步骤写出来。
众所周知RSA是非对称加密,大致过程就是客户端用公钥加密后,服务端用私钥来解密。那么我在发送请求时就需要用公钥来加密,所以首先要做的第一件事就是,拿到公钥,这个和自家开发要就行。
拿到公钥后,就要对需要加密的数据进行处理了。Python有相应的第三方库,我用的是rsa库,因为还在更新,其他库都不怎么更新了。。。
#安装rsa库
pip install rsa
加密过程:
def rsaEncrypt(msg):
"""
使用公钥加密请求数据。
:param msg: 要加密的内容
:type msg: str
:return: 加密后的密文
"""
public_key="一大长串的公钥"
#生成公钥对象
pub_key_byte=public_key.encode("utf-8")
pub_key_obj=rsa.PublicKey.load_pkcs1_openssl_pem(pub_key_byte)
#把加密数据转成字节对象,因为加密只支持字节对象
content=msg.encode("utf-8")
#加密,返回加密文本
msg_encrypted=rsa.encrypt(content,pub_key_obj)
#base64编码
cipher_base64=base64.b64encode(msg_encrypted)
#转成字符串
return cipher_base64.decode()
如上将加密过程封装好后,放到框架的基础工具模块中,在发送请求前调用该方法去加密后在发送请求即可。