RSA加密与使用

背景

在公司实际项目中,敏感数据往往需要脱敏。做接口自动化测试过程加密数据是不好控制的,那么掌握参数加密成为了前置步骤。

需要哪些东西

跟开发获取加密方式;
公钥。

直接上代码

#加密
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)))

猜你喜欢

转载自blog.csdn.net/kairui_guxiaobai/article/details/106084698