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

Yellow發表於2020-05-06

【求助】使用 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")
麻煩知道原因的同學解答一下,非常感謝!

相關文章