def decrypt(self, text):
"""?????????????
@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:
# print e
return Crypt_DecryptAES_Error, None
try:
if 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:].decode("utf8")
except Exception:
return Crypt_IllegalBuffer, None
if from_appid != self.appid:
return Crypt_ValidateAppid_Error, None
return 0, xml_content
评论列表
文章目录