转发时候的openGId解密不稳定(通过右上角转发)
发布于 6 年前 作者 houli 11080 次浏览 来自 问答

环境:node+express 服务器 https

session_key 是在转发时候实时获取的

在服务器上打印出来(** 是发帖时候加的) 各个信息都正常。

有时候解密能过 有时候就如下面的情况:

sessionKey 8J1KtJWLwt8qKZgl8h+U**==

encryptedData AvsT/xYa3aUwTBGJTirvZVLpjyeGTC7BO1fvxOwvKuueUeD1+yuyHg5OPQo9i0xQf5oHesrrAx**aeXbzwJ0i9wePKNCoRrJIpdc4xhG4CT6BSKFCJ7lyrGs8yq3JRmfOSW8ZsxOEAaMtziFwptyXw==

iv G83zaou0ZdYI8BrmLoJ2**==

Error: Illegal Buffer

at WXBizDataCrypt.decryptData (/var/www/html/***/utility/WXBizDataCrypt.js:25:11)

麻烦帮我看一下 谢谢问题出在哪里

10 回复

汗 。。。 那咋办?找不到原因啊 时好时坏

有时候对 有时候不对

那么说明解密的算法应该是正确的,那么就思考下,是否是输入的参数有误,是否用了错误的参数来解密。

怎么解决的,能给个思路或者解决方案吗

同样遇到这个问题,一直没解决

@X.Point 怎么解决的啊

我也遇到了相同的问题,一直解决不了

@楼主好,请问怎么解决的,可否分享一下,多谢多谢!

@林超 在会话状态有效的情况下,一次session_key可以被用来解密多次吗?又解密了登陆用户数据 又解密群信息?

我也遇到这个问题了。sessionkey在本次登录过程中没变,但是解密的时候偶尔会出错

用code 换取信息的代码:

const https = require(‘https’)

const qs = require(‘querystring’)

const host = require(’./wxhost.json’)

const getOpenid = (query, callback) => {

  let code = query.query.code

  const data = {

    appid: host.appid,

    secret: host.secret,

    grant_type: ‘authorization_code’,

    js_code: code

  }

  let content = qs.stringify(data)

  let url = host.url + ‘sns/jscode2session?’ + content

  https.get(url, function (res) {

    var datas = []

    var size = 0

    res.on(‘data’, function (data) {

      datas.push(data)

      size += data.length

    })

    res.on(‘end’, function () {

      var buff = Buffer.concat(datas, size)

      var result = JSON.parse(buff)

      callback(result)

    })

  }).on(‘error’, function (err) {

    Logger.error(err.stack)

    callback.apply(null)

  })

}

module.exports = getOpenid

回到顶部