# 外网平台rsa公钥加密 数据方向:内网->外网
def rsa_public_encryption(message: str) -> str:
# 加载公钥
with open(public_key_path, ‘r‘) as f:
pubkey = rsa.PublicKey.load_pkcs1(f.read().encode())
# rsa公钥加密,分段加密,64字节加密一次,加密出来的密文长度为128,base64长度为172
message_encode = message.encode()
message_len = len(message_encode)
encry_len = 0
secret_message_res = ‘‘
while encry_len < message_len:
msg = message_encode[encry_len:encry_len + 64]
secret_message = rsa.encrypt(msg, pubkey)
# base64编码返回字符串
sec_mess_b64 = base64.b64encode(secret_message).decode()
secret_message_res += sec_mess_b64
encry_len += 64
return secret_message_res
# 外网平台rsa私钥解密 数据方向:内网->外网
def rsa_private_decrypt(secret_message: str):
# 加载私钥
with open(private_key_path, ‘r‘) as f:
privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())
message_decode = ‘‘
decode_len = 0
message_len = len(secret_message)
while decode_len < message_len:
secret_msg_piece = secret_message[decode_len:decode_len + 172]
# base64解码,172长度为单位
b64decode_sec = base64.b64decode(bytes(secret_msg_piece, encoding=‘utf-8‘))
# rsa私钥解密
message = rsa.decrypt(b64decode_sec, privkey).decode()
message_decode += message
decode_len += 172
# 返回json
res_json = json.loads(message_decode)
return res_json
原文:https://www.cnblogs.com/luozeyang/p/14468729.html