python中使用rsa非对称加密, base64加密字符串

1, 先通过rsa加密字符串,在通过base64编码字符串

import rsa
import base64


def encrypt_str(origin_str_list=None, encrypt_lenth=1024):
    """
    加密函数
    :param origin_str_list: 需要加密的字符串列表
    :param encrypt_lenth:
    :return:
    """
    # 生成公私钥对
    pubkey, privkey = rsa.newkeys(encrypt_lenth)
    encrypt_str_list = []

    for origin_str in origin_str_list:
        # 先将字符串转换为字节形式,通过公钥进行加密
        encrypt_in_rsa_str = rsa.encrypt(origin_str.encode('utf-8'), pubkey)
        # 在将加密后的字符串通过base64编码
        encrypt_in_base64_str = base64.encodebytes(encrypt_in_rsa_str)
        encrypt_str_list.append(encrypt_in_base64_str)

    return encrypt_str_list, privkey


def decrypt_str(encrypt_str_list=None, privkey=None):
    """
    解密函数
    :param encrypt_str_list:加密的字符串列表
    :param privkey: 私钥
    :return:
    """
    decrypt_str_list = []
    for encrypt_str in encrypt_str_list:
        # 通过base64解码
        decrypt_in_base64_str = base64.decodebytes(encrypt_str)
        # 再通过rsa解密成字节形式,再通过utf8转换为字符串
        decrypt_in_rsa_str = rsa.decrypt(decrypt_in_base64_str, privkey).decode('utf-8')
        decrypt_str_list.append(decrypt_in_rsa_str)

    return decrypt_str_list


if __name__ == '__main__':
    encrypt_str_list, privkey = encrypt_str(origin_str_list=['hello', 'world'])
    for encrypt_str in encrypt_str_list:
        print('encrypt_str is:', encrypt_str)
    print(decrypt_str(encrypt_str_list=encrypt_str_list, privkey=privkey))

输出结果:

2, 秘钥对象转换为字符串对象

import rsa
import base64

pubkey, privkey = rsa.newkeys(1024)
#将公钥转换为字符串形式
pubkey_str = pubkey.save_pkcs1()
#将私钥转换为字符串形式
privkey_str = privkey.save_pkcs1()
# 将字符串形式的公钥转换成公钥原始对象
pubkey_1 = rsa.PublicKey.load_pkcs1(pubkey_str)
# 将字符串形式的私钥转换成私钥原始对象
privkey_1 = rsa.PrivateKey.load_pkcs1(privkey_str)

if __name__ == '__main__':
    print(pubkey_str)
    print(privkey_str)
    print('pubkey:', pubkey)
    print('pubkey_1:', pubkey_1)
    print('privkey:', privkey)
    print('privkey_1:', privkey_1)

输出结果如下:

python中使用rsa非对称加密, base64加密字符串_第1张图片

你可能感兴趣的:(python,python)