python3解密wx.getUserInfo概率性失败
发布于 6 年前 作者 tanqiang 16169 次浏览 来自 问答

官方的实例代码如何:

decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData))

首先不谈cipher.decrypt()出来的是bytes,不是string,需要decode之后才能json.loads()的问题。这解密时不时失败啊,

失败的时候就是下面的乱码字节串:

b’\xbd\t\xc4\xbb\xd6\x0bM\x16\x93lnk\xf9O\xebO\n@\x1dY\xef\xf9.\xf3\xc5\xb7S\xc6"\x8c\xc9\xd2K4\xcd\xaa\xf3\xc95\x16\x82:D4,\xf3\xf0n\xd5m$]o(\x15\xbfX\x9b\x1c\x94\xa2\x04\x87(\x8cO\x8b\x89\x9a\x92\x97<Z\xdc\xff4z\x97\xa2\xd0<AxO\xd2\xd8_\xb3\xfd}w"I\xf3d\x03\x12>\x15\x16\xd9)=d\x16\xfa\xa3\xbd9\xb3\xbb#\xed\xf4\xc5\xef\xf8\xc2e{A\xac\xe7\xcf\x92\xa2j\xa7\‘wl\x99/\xce\xc6\xa2\xebQj\xb3a"\xf0\xa6ZS\xaf\x02q\xac\’\x0c\x13\x06\x95\xcd\xde\xc64\x9e\xf6e\x0c\x9at\xfd\x1b\x95%\xa5P]JIY\xae\xc2)\x02oD\xd9\x18x\xda\xa1\xaa\xe2\x93\x10~\xbb\x04A<\xfa\xa8\x9baC@\xe6\xcb\x98\xa8q\xfe\xf1\xa3H\xf3\xa0SO_\xa4\x04!.\x0f\x8f#\xe8`X\\\x94\xfb\xe2d\xb6.>\xe0\x9c\x12?\xbe@\xe6\x9a\x0e\xf3\r\xd4\x177\x9b\x19"\xbe!/\xceG\xf7\x9b\x02\x8daE~[&\xfe\x85\x17f-U\x82\xab\x98m\x8eUW\x8a\xdf\xe6\x86T’

是怎么回事,官方出来解释下

2 回复

没有前言,没有可用信息,还时不时的问题,至少给出log啊,appid啊,入参啊。你排查过自己的问题没,会不会是你token过期了。你让我解释,我只能回答:也许是打代码的时候没有面向东方。

我之前也遇到过解密偶尔失败的问题,研究了好久。发现是因为wx.login返回的code的问题,不要总调用这个wx.login更新code就好了。(官方文档说的不要刷新登录态)

我感到奇怪的是,每次我拿到的vi和encryptedData都是一样的 只是因为跟新了code 就会解密失败,我猜解密的时候可能会用到code吗,具体机制也不是很清楚

回到顶部