python RSA加密,字节格式和base64编码格式

Posted 二兵兵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python RSA加密,字节格式和base64编码格式相关的知识,希望对你有一定的参考价值。

# coding=utf-8
import rsa
import base64

def create_keys():  # 生成公钥和私钥
    (pubkey, privkey) = rsa.newkeys(1024)
    pub = pubkey.save_pkcs1()
    with open(public.pem, wb+)as f:
        f.write(pub)

    pri = privkey.save_pkcs1()
    with open(private.pem, wb+)as f:
        f.write(pri)

def encrypt(content):
    ‘‘‘公钥加密
    :param content:
    :return:
    ‘‘‘
    with open(public.pem, rb) as publickfile:
        p = publickfile.read()
    pubkey = rsa.PublicKey.load_pkcs1(p)
    original_text = str(content).encode()
    # 加密后的密文
    crypt_text = rsa.encrypt(original_text, pubkey)
    return crypt_text  # 返回的是字节。


def decrypt(crypt_text):
    ‘‘‘ 私钥解密
    :param crypt_text:
    :return:
    ‘‘‘
    with open(private.pem, rb) as privatefile:
        p = privatefile.read()
    privkey = rsa.PrivateKey.load_pkcs1(p)
    lase_text = rsa.decrypt(crypt_text, privkey).decode()  # 注意,这里如果结果是bytes类型,就需要进行decode()转化为str
    return lase_text


if __name__ == __main__:
    # TODO 生成 .pem 证书
    #create_keys()  # 生成公钥和私钥,当前目录下会生成private.pem 和public.pem

    # TODO 加密和解密 返回字节
    encrypt_str = encrypt(你好中国)
    print(encrypt_str)  # b"	Gu	‘xbcxxd4xbbxd7TIxadSx10x1bPjx12Gxd4z/xdfxa0$xc2xd1.x14rIxe5Uxb7xef{x8fXxd5x8d%Hx14xc5xaax15xf1xcdx9aNCiqox99O@x8bxe2SsZxa9(5xd3xe5G!x82x1d~x04xc0(xe5xa7x85xb7Pxd6x8a ?j#xaex17x9axdexb0xa8x90lxb9xd2xe4xf2G}x8eHx7f&xe6xd5xcdxd9x02xb6x86xc4.xbcxf7xcaxd8x10xd3x90,xfe#}xecx0bL"

    # # base64编码后
    print(str(base64.b64encode(encrypt_str), encoding="utf-8")) # CUd1CSe8eNS711RJrVMQG1BqEkfUei/foCTC0S4UcknlVbfve49Y1Y0lSBTFqhXxzZpOQ2lxb5lPQIviU3NaqSg10+VHIYIdfgTAKOWnhbdQ1oogP2ojrhea3rCokGy50uTyR32OSH8m5tXN2QK2hsQuvPfK2BDTkCz+I33sC0w=


    # TODO 解密
    decrypt_str = decrypt(encrypt_str)
    print(decrypt_str) # 你好中国
    # 如果编码后解密的时候需要解码
    print(bytes(base64.b64decode(str(base64.b64encode(encrypt_str), encoding="utf-8")))) # b"	Gu	‘xbcxxd4xbbxd7TIxadSx10x1bPjx12Gxd4z/xdfxa0$xc2xd1.x14rIxe5Uxb7xef{x8fXxd5x8d%Hx14xc5xaax15xf1xcdx9aNCiqox99O@x8bxe2SsZxa9(5xd3xe5G!x82x1d~x04xc0(xe5xa7x85xb7Pxd6x8a ?j#xaex17x9axdexb0xa8x90lxb9xd2xe4xf2G}x8eHx7f&xe6xd5xcdxd9x02xb6x86xc4.xbcxf7xcaxd8x10xd3x90,xfe#}xecx0bL"

 

以上是关于python RSA加密,字节格式和base64编码格式的主要内容,如果未能解决你的问题,请参考以下文章

base64编解码与hash加密

基于python3.5的 rsa+base64加解密

iOS Base64加密

BASE64加密原理

常见加密算法

从 base64 RSA 公钥生成 SecKeyRef