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:
return 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(b"I", content[:4])[0])
xml_content = content[4:xml_len+4]
from_appid = smart_bytes(content[xml_len+4:])
except Exception:
return WXBizMsgCrypt_IllegalBuffer, None
if from_appid != smart_bytes(appid):
return WXBizMsgCrypt_ValidateAppid_Error, None
return 0, xml_content
评论列表
文章目录