Your commit message
This commit is contained in:
26
MyWeb/WXBizDataCrypt.py
Normal file
26
MyWeb/WXBizDataCrypt.py
Normal file
@@ -0,0 +1,26 @@
|
||||
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 # 返回原始数据以便进一步分析错误
|
||||
Reference in New Issue
Block a user