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


↙↙↙阅读原文可查看相关链接,并与作者交流