【求助】使用 python 第三方库 pycryptodome 进行 RSA 加密得到的结果,发起请求,接口接收到请求后,开发 Java 代码私钥解密后请求参数会乱码。
示例
请求参数:
{
"Timestamp":"2020-04-25 17:11:01.039"
}
解密后结果:
�Q&��H�sk��Χr���?6��{\��`0��j{"Timestamp":"2020-04-28 19:15:01.039"}
python 代码:
def rsa_utils(pub_key, message):
message = json.dumps(message, ensure_ascii=False, separators=(',', ':'))
message = message.replace("\n", "")
msg = message.encode("UTF-8")
length = len(msg)
print(length)
default_length = 245
# 公钥加密
public_key = "-----BEGIN PUBLIC KEY-----\n" + pub_key + "\n-----END PUBLIC KEY-----"
pubobj = PKCS1_v1_5.new(RSA.importKey(public_key))
# 长度不用分段
if length < default_length:
# print("True")
return (base64.b64encode(pubobj.encrypt(msg))).decode("utf-8")
# 需要分段
else:
offset = 0
res = []
while length - offset > 0:
if length - offset > default_length:
res.append(pubobj.encrypt(msg[offset:offset + default_length]))
else:
res.append(pubobj.encrypt(msg[offset:]))
offset += default_length
byte_data = b''.join(res)
# return base64.b64encode(byte_data)
return (base64.b64encode(byte_data)).decode("utf-8")
麻烦知道原因的同学解答一下,非常感谢!