收藏
回答

微信小程序 获取手机号码有时候报错?

javax.crypto.BadPaddingException: pad block corrupted

有时候会报这个错误,有哪位大神遇到过这个问题?

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

4 个回答

  • 陈宇明
    陈宇明
    03-02

    获取session_key,而sessionKey又是解密encryptedData的密钥,所以一旦我们的wx.login在wx.getUserInfo之后获取,我们redis中存储的sessionKey绝对不是当前获取encryptedData的密钥。所以更改小程序请求顺序,每次请求wx.getUserInfo之前先请求wx.login,同时生成sessionKey放入缓存。而后需要解密的时候就可以正常解密了。

    03-02
    有用
    回复
  • fn8xzdkxu9O
    fn8xzdkxu9O
    03-02

    没出现这个问题,解密比较好的方案是用session_key....但是我们一直用的code去解密的。。在手机号授权前先调用login获取code,再授权时通过code + iv + encrypteData解密。。

    03-02
    有用
    回复 3
    • kk
      kk
      03-02
      是这样用的,但是有时候 sessionKey 过期了,再去拿手机号码的时候会出现解密失败?你们那边没有出现这种情况吗
      03-02
      回复
    • 💋艾雪
      💋艾雪
      03-02回复kk
      我们都是前端判断是否过期 如果过期传新的
      03-02
      回复
    • fn8xzdkxu9O
      fn8xzdkxu9O
      03-02回复kk
      我们是code换取的。不是sessionKey。没出现过期的情况。极端情况下 用户在某个页面停留很久没操作,然后一段时间后 他去点授权那肯定是失败的
      03-02
      回复
  • Brother斌🎈
    Brother斌🎈
    03-02

    好像是前端登陆态更新了,后端sessionKey还是旧的导致对称解密失败,看一下前端wx.login是不是在wx.getUserInfo之后获取,或者在接口回调中又调了wx.login刷新了登录态

    03-02
    有用
    回复 1
    • kk
      kk
      03-02
      我调用 login 后,直接获取的手机号码
      03-02
      回复
  • Username
    Username
    03-02

    无能为力 但还是想尽一点力


    03-02
    有用
    回复 1
    • 花臂Seven
      花臂Seven
      03-31
      哈哈  笑死
      03-31
      回复
登录 后发表内容
问题标签