收藏
回答

encryptedData解码编译报错,如何解决?

微信小程序会对一些敏感数据加密,会输出一个encryptedData,然后对其解密,得到需要的json,(官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法),里面提供了一个示例代码的下载,链接:https://res.wx.qq.com/wxdoc/dist/assets/media/aes-sample.eae1f364.zip  

里面node文件夹两个js文件,demo、WXBizDataCrypt,但拿来后直接调用运行,居然报错 ReferenceError: Buffer is not defined,这个Buffer为什么没定义呢?

出错语句为 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


回答关注问题邀请回答
收藏

1 个回答

  • 沉 稳
    沉 稳
    05-18

    这就是值得吐槽的点了。腾讯的很多API 下载下来基本上都不能上手即用。都需要自己慢慢填坑

    05-18
    有用
    回复
登录 后发表内容