近来做一小程序功能,需获取微信登录时返回encryptedData数据里的unionid , 返回的encryptedData是经过加密的需进行解密。 官方给的demo 都是后台的,尝试使用Crypto插件解密
小程序官方encryptedData解密
Crypto使用文档
getUnionId: function (key, iv, encryptedData) {
const crypto = requirePlugin("Crypto");
const mode = ['CBC'];
const padding = ['Pkcs7'];
var mykey = crypto.Base64.parse(key)
var myiv = crypto.Base64.parse(iv)
var myEncryptedData = crypto.Base64.parse(encryptedData)
var aesCipher = crypto.Base64.stringify(myEncryptedData)
mode.map((modeItem) => {
padding.map((paddingItem) => {
const v = new crypto.AES().decrypt(aesCipher, mykey, {
iv: myiv,
mode: crypto.Mode[modeItem],
padding: crypto.Padding[paddingItem]
});
var data = JSON.parse(v.toString(crypto.Utf8))
}
}
小程序中使用插件需在app.json中注册,并在小程序公众平台上关联使用的插件
"plugins": {
"Crypto": {
"version": "0.0.002",
"provider": ""
}
}