背景
在公司实际项目中,敏感数据往往需要脱敏。做接口自动化测试过程加密数据是不好控制的,那么掌握参数加密成为了前置步骤。
需要哪些东西
跟开发获取加密方式;
公钥。
直接上代码
#加密
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from dataCenter.in_data import public_key
#引入公钥
rsaPublicKey=public_key.get('public_key')
#加密函数
def rsa_encrypt(msg):
# rsakey = RSA.importKey(rsaPublicKey)
# cipher = Cipher_pkcs1_v1_5.new(rsakey) # 生成对象
# cipher_text = base64.b64encode(cipher.encrypt(param.encode('UTF-8'))) # 对传递进来的密码加密
# return cipher_text.decode('utf-8')
msg = msg.encode('utf-8')
length = len(msg)
default_length = 117
# 公钥加密
pubobj = Cipher_pkcs1_v1_5.new(RSA.importKey(rsaPublicKey))
# 长度不用分段
if length < default_length:
return base64.b64encode(pubobj.encrypt(msg))
# 需要分段
offset = 0
res = []
while length - offset > 0:
if length - offset > default_length:
res.append(pubobj.encrypt(msg[offset:offset + default_length]))
else:
res.append(pubobj.encrypt(msg[offset:]))
offset += default_length
byte_data = b''.join(res)
return base64.b64encode(byte_data).decode('utf-8')
调试
## 调试
if __name__=='__main__':
param='{"birthday":"1970","other":"S/O: Late Pulimootil Thomas George, B - 203 , Sanskruti 1, New Court Road, Near Bagicha Hotel, Vasai West, Vasai","addressAll":"S/O: Late Pulimootil Thomas George, B - 203 , Sanskruti 1, New Court Road, Near Bagicha Hotel, Vasai West, Vasai, Thane, Bassein, Maharashtra, 401201","gender":"Male","pin":"401201","subdistrict":"Thane","district":"Bassein","name":"Shivani Patwal","state":"Maharashtra","idNumber":"894671325720"}'
a='NEHA'
b= 'SHARMA'
c='08/Nov/1979'
d='OFOPY7154F'
e='{"birthday":"08/11/1979","fatherName":"SHARMA","name":"NEHA","idNumber":"OFOPY7154F"}'
print(str(rsa_encrypt(a),encoding = "utf-8"))
print(type(rsa_encrypt(a)))
print(str(rsa_encrypt(b),encoding = "utf-8"))
print(str(rsa_encrypt(c),encoding = "utf-8"))
print(str(rsa_encrypt(d),encoding = "utf-8"))
print(str(rsa_encrypt(e),encoding = "utf-8"))
print((rsa_encrypt(param)))