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

Posted liaojiafa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于python3.5的 rsa+base64加解密相关的知识,希望对你有一定的参考价值。

python3.5.3的版本。需要先生成一个私钥,然后放入这里面即可。

这个有个地方需要注意的是:

  1. 加密阶段,我们base64 第一次加密的时候,是加密传入的字符串,然后rsa继续把base64加密后的数据再次加密 , 等rsa加密完成后,我们base64进行第二次加密,此刻加密的数据是加密 rsa加密后的数据了。
  2. 解密阶段。一路狂解密,不要停

一定要注意上面的加密阶段,别等第一个base64加密后,第二个base64就解密了,这样是行不通的。

#!/usr/bin/env python3
import rsa
import base64
import json
message2=b""
privatePath = "/root/PycharmProjects/xxxxx/pem/rsa_private_key.pem"
def decryption(data):
        ‘‘‘
        decryption the data
        :return:
        ‘‘‘
        mes=base64.b64decode(data)   # base64第一次解密
        print(‘mes -->‘,mes,len(mes))
        message2=b""
        with open(privatePath) as privatefile:
            p = privatefile.read()
            privkey = rsa.PrivateKey.load_pkcs1(p)

        for i in range(0,len(mes),128):
            data = i+128
            kk=mes[i:data]
            message = rsa.decrypt(kk, privkey)   # rsa解密
            message2 = message2 + message
        data =  base64.b64decode(message2)  # base64 解密 ras解密后的数据
        return data

def encryption(data):
        ‘‘‘
        encryption the data
        :param data:
        :return:
        ‘‘‘
        print("raw data -->",data)
        mes=base64.b64encode(data.encode(‘utf-8‘))  # base64第一次加密
        print("after base64 en",mes)

        mm = base64.b64decode(mes)
        print("after base64 de",mm)
        message2=b""
        with open(privatePath) as privatefile:
            p = privatefile.read()
            privkey = rsa.PrivateKey.load_pkcs1(p)
        for i in range(0,len(mes),128):
            data = i+128
            kk=mes[i:data]
            message = rsa.encrypt(kk, privkey)  # rsa加密
            message2 = message2 + message
        print("after en message2 -->",message2)
        data = base64.b64encode(message2)   # base54 第二次加密 rsa加密的结果

        return data

rawdata = "key=test,author=liaojiafa,date=20181017"
x = encryption(rawdata)
print("x",x)
d = decryption(x)
print("d",d)

以上是关于基于python3.5的 rsa+base64加解密的主要内容,如果未能解决你的问题,请参考以下文章

Base64算法原理及实现

Base64算法原理及实现

从 base64 RSA 公钥生成 SecKeyRef

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

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

RSA+Base64加解密Java工具类RSAUtil