首先借鉴了两篇文章:
首先吐槽一下,微信小程序这个设计,其实密文中包含的用于开发的有用信息并不是很多。
解密后的类似:
{"openId":"oy9H90Nqxxxxxxxxxxx0BJmuw",
"nickName":"xxxxxxxxx",
"gender":1,
"language":"zh_CN",
"city":"city",
"province":"province",
"country":"country",
"avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/xxxxxxxxOcvbibeJxx0",
"watermark":{"timestamp":timestamp,"appid":"wx58b6xxxxxxxxx627"
}
解密需要登录的时候 提供的几个参数:
密文:encryptedData
session_key
偏移向量 iv
登录的几个东西如何获取这里简单说下:
session_ID的获取:wx.login()函数的返回里面包含了CODE.利用这个CODE,到这个地址去交换:
iv和encryptedData的获取:wx.getUserInfo()的调用的时候,同时设置属性withCredentials: true,
wx.getUserInfo({ withCredentials: true, success: function(res) { console.log(res) that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } })
就可以获取到所有的参数。
Java侧实现解密需要如下的包:
bcprov-jdk15on-157.jar ----主要是AES解码
commons-codec-1.10.jar ----主要是base64编码
核心代码:
[java] view plain copy