收藏
回答

碰到这个问题:EVP_DecryptFinal_ex:bad decrypt

rt

报错:

Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt

    at Error (native)

    at Decipheriv.Cipher.final (crypto.js:150:26)

    at WXBizDataCrypt.decryptData (/xxxxxxxx/utils/WXBizDataCrypt.js:19:29)


这里是 19 行:decoded += decipher.final('utf8');


问题是,这个是偶发的,有时候可以有时候不行。。。

用的是 WXBizDataCrypt.js

个人信息解密 ‘WXBizDataCrypt’ 中,node 版本。

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

3 个回答

  • 卫国
    卫国
    2018-08-28

    也许是这个原因:

    https://github.com/tencentyun/wafer2-startup/issues/132#issuecomment-392231500

    2018-08-28
    有用 1
    回复 4
    • Ds.3783
      Ds.3783
      2018-11-05

      没错就是这个原因,如果当前session 没过期,wx.login()  code 是错的。然后解密的时候会失败。

      ERR_IN_DECRYPT_DATA这个解密错误,似乎是由过期seesion_key造成的,说来也奇怪:

      1. 客户端 wx.login拿到code

      2. 客户端wx.getUserInfo(改用button形式)拿到iv\encryptData

      3. 服务端用code换取session_key

      4. 服务端用session_key\iv\encryptData解密

      这个过程似乎很正常,但是每五到十分钟调用一次,能稳定复现解密失败的问题,问题在于session_key未过期的情况下,第三部用新的code换取到的session_key似乎是无效的,导致第四步解密失败。
      解决方法就是通过checkSession结果来判断是否需要重新换取新的session_key


      2018-11-05
      回复
    • Violet_Ice紫冰
      Violet_Ice紫冰
      03-13回复Ds.3783
      checkSession也是不稳定的。小程序没有一个是稳定的。解决办法就是重复尝试。
      03-13
      回复
    • Ds.3783
      Ds.3783
      04-20回复Violet_Ice紫冰
      感觉腾讯的工程师很废柴
      04-20
      回复
    • Violet_Ice紫冰
      Violet_Ice紫冰
      04-22回复Ds.3783
      主要是逻辑太多了,各种限制。微信产品刁难微信猿,微信猿又刁难我们。
      04-22
      回复
  • 坏时少爷
    坏时少爷
    2018-12-31

    我获取用户手机号,解密的时候百分之一百会遇到这个问题。


    2018-12-31
    有用
    回复
  • coder2017
    coder2017
    2018-05-04

    请问楼主,这个问题解决了吗?

    2018-05-04
    有用
    回复 2
    • Hugh
      Hugh
      2018-07-21

      没有,还是会碰到

      2018-07-21
      回复
    • Mr.b
      Mr.b
      2019-11-08回复Hugh
      现在解决了吗我也会遇到这个问题
      2019-11-08
      回复
登录 后发表内容