收藏
回答

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

javax.crypto.BadPaddingException: pad block corrupted

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

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

4 个回答

  • 陈宇明
    陈宇明
    2021-03-02

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

    2021-03-02
    有用
    回复 1
    • 小庄梦蝶
      小庄梦蝶
      2021-06-05
      。。。wx.getuserinfo这个早就废了,毛线用
      2021-06-05
      回复
  • 睡前原谅一切
    睡前原谅一切
    2021-03-02

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

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

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

    2021-03-02
    有用
    回复 1
    • kk
      kk
      2021-03-02
      我调用 login 后,直接获取的手机号码
      2021-03-02
      回复
  • ㅤ国民校草ㅤ
    ㅤ国民校草ㅤ
    2021-03-02

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


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