python3.5.3的版本。需要先生成一个私钥,然后放入这里面即可。
这个有个地方需要注意的是:
- 加密阶段,我们base64 第一次加密的时候,是加密传入的字符串,然后rsa继续把base64加密后的数据再次加密 , 等rsa加密完成后,我们base64进行第二次加密,此刻加密的数据是加密 rsa加密后的数据了。
- 解密阶段。一路狂解密,不要停
一定要注意上面的加密阶段,别等第一个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)
原文地址:https://www.cnblogs.com/liaojiafa/p/9886321.html
时间: 2024-11-04 22:55:26