收藏
回答

公众号加密与解密模式下我用官方的Python代码解密失败,不知道问题在哪里?

AppID
wxe85f83b0d7039e3e

 pc = Prpcrypt(self.key)

        ret, xml_content = pc.decrypt(encrypt, self.m_sReceiveId)


官方代码中这两句是不是有问题的啊?

  def decrypt(self, text, receiveid):

        """对解密后的明文进行补位删除

        @param text: 密文

        @return: 删除填充补位后的明文

        """

        try:

            cryptor = AES.new(self.key, self.mode, self.key[:16])

            # 使用BASE64对密文进行解码,然后AES-CBC解密

            plain_text = cryptor.decrypt(base64.b64decode(text))

        except Exception as e:

            logger = logging.getLogger()

            logger.error(e)

            return ierror.WXBizMsgCrypt_DecryptAES_Error, None

        try:

            pad = plain_text[-1]

            # 去掉补位字符串

            # pkcs7 = PKCS7Encoder()

            # plain_text = pkcs7.encode(plain_text)

            # 去除16位随机字符串

            content = plain_text[16:-pad]

            xml_len = socket.ntohl(struct.unpack("I", content[: 4])[0])

            xml_content = content[4: xml_len + 4]

            from_receiveid = content[xml_len + 4:]

        except Exception as e:

            logger = logging.getLogger()

            logger.error(e)

            return ierror.WXBizMsgCrypt_IllegalBuffer, None


        if from_receiveid.decode('utf8') != receiveid:

            return ierror.WXBizMsgCrypt_ValidateCorpid_Error, None

        return 0, xml_content

回答关注问题邀请回答
收藏
登录 后发表内容
问题标签