小程序
小游戏
企业微信
微信支付
扫描小程序码分享
微信小程序会对一些敏感数据加密,输出一个encryptedData,然后对其解析(官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法),里面提供了一个示例代码的下载,但拿来后直接调用运行,居然报错 ReferenceError: Buffer is not defined,这个Buffer为什么没定义呢?
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我是复制了node文件,里面两个js文件,一个demo.js、一个WXBizDataCrypt.js,编译报错为 var sessionKey = new Buffer(this.sessionKey, 'base64'),WXBizDataCrypt.js代码如下
var crypto = require('crypto')
function WXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
// base64 decode
var sessionKey = new Buffer(this.sessionKey, 'base64')
encryptedData = new Buffer(encryptedData, 'base64')
iv = new Buffer(iv, 'base64')
try {
// 解密
var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
// 设置自动 padding 为 true,删除填充补位
decipher.setAutoPadding(true)
var decoded = decipher.update(encryptedData, 'binary', 'utf8')
decoded += decipher.final('utf8')
decoded = JSON.parse(decoded)
} catch (err) {
throw new Error('Illegal Buffer')
if (decoded.watermark.appid !== this.appId) {
return decoded
module.exports = WXBizDataCrypt
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
示例好几个语言,你用的哪个?里面的参数需要更换成你自己的,贴一下代码看看。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我是复制了node文件,里面两个js文件,一个demo.js、一个WXBizDataCrypt.js,编译报错为 var sessionKey = new Buffer(this.sessionKey, 'base64'),WXBizDataCrypt.js代码如下
var crypto = require('crypto')
function WXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
// base64 decode
var sessionKey = new Buffer(this.sessionKey, 'base64')
encryptedData = new Buffer(encryptedData, 'base64')
iv = new Buffer(iv, 'base64')
try {
// 解密
var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
// 设置自动 padding 为 true,删除填充补位
decipher.setAutoPadding(true)
var decoded = decipher.update(encryptedData, 'binary', 'utf8')
decoded += decipher.final('utf8')
decoded = JSON.parse(decoded)
} catch (err) {
throw new Error('Illegal Buffer')
}
if (decoded.watermark.appid !== this.appId) {
throw new Error('Illegal Buffer')
}
return decoded
}
module.exports = WXBizDataCrypt
示例好几个语言,你用的哪个?里面的参数需要更换成你自己的,贴一下代码看看。
var crypto = require('crypto')
function WXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
// base64 decode
var sessionKey = new Buffer(this.sessionKey, 'base64')
encryptedData = new Buffer(encryptedData, 'base64')
iv = new Buffer(iv, 'base64')
try {
// 解密
var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
// 设置自动 padding 为 true,删除填充补位
decipher.setAutoPadding(true)
var decoded = decipher.update(encryptedData, 'binary', 'utf8')
decoded += decipher.final('utf8')
decoded = JSON.parse(decoded)
} catch (err) {
throw new Error('Illegal Buffer')
}
if (decoded.watermark.appid !== this.appId) {
throw new Error('Illegal Buffer')
}
return decoded
}
module.exports = WXBizDataCrypt