官方提供的类 WXBizDataCrypt 中的方法decrypt存在一个字节转换的bug
import base64 import json from Crypto.Cipher import AES class WXBizDataCrypt: def __init__( self , appId, sessionKey): self .appId = appId self .sessionKey = sessionKey def decrypt( self , encryptedData, iv): # base64 decode sessionKey = base64.b64decode( self .sessionKey) encryptedData = base64.b64decode(encryptedData) iv = base64.b64decode(iv) cipher = AES.new(sessionKey, AES.MODE_CBC, iv) decrypted = json.loads( self ._unpad(cipher.decrypt(encryptedData)) ) if decrypted[ 'watermark' ][ 'appid' ] ! = self .appId: raise Exception( 'Invalid Buffer' ) return decrypted def _unpad( self , s): return s[: - ord (s[ len (s) - 1 :])] |
大概19行的位置
|
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95
文档链接麻烦提供下
有最终的解决方案吗?我这里也报同样的错误
没用啊还是报错
还有一个问题,当nickname带了表情的时候,也会报错