[求助] 使用 python 第三方庫 pycryptodome 進行 RSA 加密得到的結果,發起請求,介面接收到請求後,開發 Java 程式碼私鑰解密後請求引數會亂碼

Yellow發表於2020-05-06

【求助】使用python第三方庫pycryptodome進行RSA加密得到的結果,發起請求,介面接收到請求後,開發Java程式碼私鑰解密後請求引數會亂碼。

示例
請求引數:
{
"Timestamp":"2020-04-25 17:11:01.039"
}

解密後結果:
Q&��Hsk��Χ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")
麻煩知道原因的同學解答一下,非常感謝!

相關文章