from base64 import b64decode from Crypto.Cipher import AES import json class WXBizDataCrypt: def __init__(self, appid, session_key): self.appid = appid self.session_key = b64decode(session_key) def decrypt(self, encrypted_data, iv): # AES解密 try: cipher = AES.new(self.session_key, AES.MODE_CBC, b64decode(iv)) decrypted = json.loads(self._unpad(cipher.decrypt(b64decode(encrypted_data)))) if decrypted['watermark']['appid'] != self.appid: raise Exception('Invalid Buffer') return decrypted except Exception as e: raise Exception('Failed to decrypt data') def _unpad(self, s): try: return s[:-ord(s[len(s) - 1:])] except Exception as e: print("Error during unpadding:", e) return s # 返回原始数据以便进一步分析错误