微信小程序使用Node.js解密userInfo
const crypto = require("crypto")
function decryptData(encryptedData,sessionKey,iv,appId) {
//转换为base64格式数据
iv = Buffer.from(iv,'base64')
encryptedData = Buffer.from(encryptedData,'base64')
sessionKey = Buffer.from(sessionKey,'base64')
try {
//根据给定的算法,密钥和初始化向量,创建并返回一个Decipher解密对象。
let decipher = crypto.createDecipheriv('aes-128-cbc',sessionKey,iv)
//删除填充补位
decipher.setAutoPadding(true)
//往decipher实例中添加数据,第一个参数是数据,第二个参数是传入数据的格式,默认是 ‘binary’。第三个参数是返回的数据格式。
var decoded = decipher.update(encryptedData,'binary','utf8')
//返回任何剩余的解密内容。不能调用多次
decoded += decipher.final('utf8')
decoded = JSON.parse(decoded)
} catch(e) {
throw new Error('Illegal Buffer')
}
//检验是否获取正确,是当前appid的数据
if (decoded.watermark.appid !== appId) {
throw new Error('Illegal Buffer')
}
return decoded
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。