zoukankan      html  css  js  c++  java
  • 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"
  • 相关阅读:
    学好VC++的十大良好习惯
    VC6.0调试技巧
    匈牙利命名法
    VC中常用文件操作(三)
    VL_FEAT——图像处理函数库
    MATLAB——linspace
    (Your)((Term)((Project)))(字符串处理)
    Matrix Chain Multiplication(栈的简单应用)
    The Triangle(DP基础)
    MATLAB——polyfit
  • 原文地址:https://www.cnblogs.com/pythonSF/p/13032812.html
Copyright © 2011-2022 走看看