收藏
回答

用户信息解密 encryptedData 出现Illegal Buffer错误

我把所有信息都拿到后台获取解密,前台会返回
前台把 encryptedData传到后台中间会出现空格,

前台打印:



大佬们,给个解决方法


最后一次编辑于  2018-07-10
回答关注问题邀请回答
收藏

4 个回答

  • 明明德
    明明德
    2018-07-16

    url传递base64加密串时,“+”会在url编码中视为空格,解密就会失败。
    解决方法,base64解密前替换空格为“+”。

    2018-07-16
    赞同 2
    回复 6
    • 波波先生
      波波先生
      2018-07-20

      已解决。谢谢了!

      2018-07-20
      回复
    • 忧郁的胡渣
      忧郁的胡渣
      2018-08-28回复波波先生

      您好怎么解决的,求告知.


      2018-08-28
      回复
    • 波波先生
      波波先生
      2018-08-28回复忧郁的胡渣

      encryptedData 传参过程中“+”字符丢失。+号属于敏感字符。请求时:header使用

      header: {

              'Content-Type': 'application/json'

            },

      可以解决。


      2018-08-28
      回复
    • 忧郁的胡渣
      忧郁的胡渣
      2018-08-28回复波波先生

      我把 header:{ 'Content-Type''application/json'} 设置为此 还需不需要对encryptedData里面的 "+" 进行操作?  什么样的操作?


      2018-08-28
      回复
    • 波波先生
      波波先生
      2018-08-28回复忧郁的胡渣

      你把参数encryptedData,打印看看不就知道了?如果有+,应该不需要操作了。直接解密。

      https://blog.csdn.net/qq_42172829/article/details/81944215


      2018-08-28
      回复
    查看更多(1)
  • 洞天水月
    洞天水月
    10-30

    导致问题的原因是getUserInfo放在了wx.login之前。getUserInfo获取到 iv 和encryptedData 传给后台。 wx.login调用时用户的 session_key 可能会被更新而致使旧 session_key 失效。这样后台再去解密的时候就等于在用新的session_key去解密旧的session_key加密的数据,就会报上边的错误。

    参考:http://www.phpblog.cn/portal/article/index/id/107.shtml


    10-30
    赞同 1
    回复 1
    • 洞天水月
      洞天水月
      10-30
      导致问题的原因是getUserInfo放在了wx.login之前。getUserInfo获取到 iv 和encryptedData 传给后台。 wx.login调用时用户的 session_key 可能会被更新而致使旧 session_key 失效。这样后台再去解密的时候就等于在用新的session_key去解密旧的session_key加密的数据,就会报上边的错误。
      参考:http://www.phpblog.cn/portal/article/index/id/107.shtml
      10-30
      回复
  • 波波先生
    波波先生
    2018-07-10

    附:

    2018-07-10
    赞同
    回复 1
    • 坏时少爷
      坏时少爷
      07-25
      解决了吗?
      07-25
      回复
  • 陈
    2018-07-10

    trim了解一下,你去网上搜索一下去空格的函数试一下

    2018-07-10
    赞同
    回复 11
    • 波波先生
      波波先生
      2018-07-10

      弄过了 ,上面有一个去除空格的函数,调用出来的值长度少几位。关键好像还不是这的问题。

      2018-07-10
      回复
    • 陈
      2018-07-10回复波波先生

      那到底是不是空格的问题

      2018-07-10
      回复
    • 波波先生
      波波先生
      2018-07-10回复

      搞不清,因为encryptedData长度跟前台的长度一致,

      2018-07-10
      回复
    • 陈
      2018-07-10回复波波先生

      是不是你调用的方法错了,你这应该是解密,你调用了修改的方法

      2018-07-10
      回复
    • 波波先生
      波波先生
      2018-07-10回复

      调用的就是 解密的方法啊,已经在解密了 出现乱码了,看见没!


      2018-07-10
      回复
    查看更多(6)