wechat_sdk/lib/crypto/base.py
def decrypt(self, text, appid):
        """对解密后的明文进行补位删除

        @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:
            raise DecryptAESError(e)

        try:
            if six.PY2:
                pad = ord(plain_text[-1])
            else:
                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_appid = content[xml_len + 4:]
        except Exception as e:
            raise IllegalBuffer(e)
        if from_appid != appid:
            raise ValidateAppIDError()
        return xml_content
def decrypt(self, text, appid):
        """对解密后的明文进行补位删除

        @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:
            raise DecryptAESError(e)

        try:
            if six.PY2:
                pad = ord(plain_text[-1])
            else:
                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_appid = content[xml_len + 4:]
        except Exception as e:
            raise IllegalBuffer(e)
        if from_appid != appid:
            raise ValidateAppIDError()
        return xml_content
def decrypt ( self , text , appid ) : 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 : raise DecryptAESError ( e ) try : if six . PY2 : pad = ord ( plain_text [ - 1 ] ) else : 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_appid = content [ xml_len + 4 : ] except Exception as e : raise IllegalBuffer ( e ) if from_appid != appid : raise ValidateAppIDError ( ) return xml_content
对解密后的明文进行补位删除

        @param text: 密文
        @return: 删除填充补位后的明文
对解密后的明文进行补位删除