收藏
回答

javax.crypto.BadPaddingException

问题模块
API和组件


最近从后台解密手机号时,有20%左右的概率发生Exception,同一个人在sessionKey一样的情况下,有时成功有时失败,例如:

第一次返回的密文、key、lv如下:

t8BGeUvYMOBjW3B1zwyd4cQtR2tCvBih+4Vn19NQdWooABcaTB+rx/C37A97caGgVoYO47CNf4iiOEO6g1aGbmMbEDVC/eNx0MScP3HidkSt1aYo6776aen4y6X3/bjUBPEE3qJNu2im/sl5pQo3dROC5MBDDV5fhhIl0780vG0Mq0MkFuL7kGMlF1HlEA5oexFFH4UvJkQ4cEZ6DxiCKg==  dr8ynaTVMz1VnYgLztZWuA==  89m6B40VN3px2MrMQYSEoA==

javax.crypto.BadPaddingException: pad block corrupted

at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(Unknown Source)

at javax.crypto.Cipher.doFinal(Cipher.java:2165)

at com.qq.weixin.mp.aes.AES.decrypt(AES.java:38)

第二次返回的密文、key、lv如下:

omHdcLIWhtH+3LSSkdUiN0Hiz6KH5ybX7nEIbP+lu4SesxvqzP6ppfGgPmJ/KmNxCGDPxTajTX2MlL82JxlIDmWkd3YkM56rOMEjRgtBUogjkpZOn6wHb+b38RSeFCGE27hX8ouL7cjsRXLSVUQCJ4YmKkPXiFhB7TbSWG9kZowjj+sz64dhn524fT14B2lRJvMbhl5NEtWfpC9kyGcP/A==  dr8ynaTVMz1VnYgLztZWuA==  5TU46LYZeWZGQxDeAGug8Q==

第一次解密失败,第二次解密成功,同一个人同一个key

已确保用户处于login状态,上述的sessionKey也是一样的,但我看后台日志时不时蹦出这个exception,百思不得其解。


最后一次编辑于  2017-11-29  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

4 个回答

  • 宜远
    宜远
    2018-04-28

    请问这个问题后来有跟进吗?现在获取群聊id有时会出现解密问题不知道是不是这个原因。

    2018-04-28
    赞同
    回复
  • 乐天⁸⁸⁰⁰⁶⁶⁷🐳
    乐天⁸⁸⁰⁰⁶⁶⁷🐳
    2017-12-02

    经过反复观察服务器日志,发现是iv与密文不匹配造成,上文中输出的参数是同一个人的,第一次失败,几秒后第二次点击则成功。

    对应明文是:

    {"phoneNumber":"15902237321","purePhoneNumber":"15902237321","countryCode":"86","watermark":{"timestamp":1511859580,"appid":"wx034468d82f0181a4"}}

    第一次的密文:

    ZwBaRtk/nnIda7/MtaNQIttN/yhdjE60zqNQnhUsy2wT4JqP63tjFh4B2fFpcWwNDiyzmPZadFAD

    PYs1fYmeLpWymPgJYudPV8iZNCkGw1Ja43c97o7M2LbBB5CCxJwuOqX+pEjWTm1KZRkCgK+8SKi5

    /Z832T/BE74RD+W0LMDlddBE/fvSt5+UtoyG6ax/w+XeoTs8yXxbM6N9Hy6Gwg==

    第二次的密文:

    omHdcLIWhtH+3LSSkdUiN0Hiz6KH5ybX7nEIbP+lu4SesxvqzP6ppfGgPmJ/KmNxCGDPxTajTX2M

    lL82JxlIDmWkd3YkM56rOMEjRgtBUogjkpZOn6wHb+b38RSeFCGE27hX8ouL7cjsRXLSVUQCJ4Ym

    KkPXiFhB7TbSWG9kZowjj+sz64dhn524fT14B2lRJvMbhl5NEtWfpC9kyGcP/A==

    可以看出第一次服务器返回的密文或iv是不匹配的

    由于session_key没有变化,而iv和密文都是腾讯服务器返回的,还希望工程师能在服务端检查一下,以免后台时不时的报excption,用户也要点两次才能授权,谢谢。


    2017-12-02
    赞同
    回复 1
    • LightHouse
      LightHouse
      2018-08-16

      请问这个问题解决了吗?


      2018-08-16
      回复
  • 乐天⁸⁸⁰⁰⁶⁶⁷🐳
    乐天⁸⁸⁰⁰⁶⁶⁷🐳
    2017-11-29

    showDecryptedInfo()是怎么用的?我在console里敲这个,无论授权之前还是之后都输出undefined

    2017-11-29
    赞同
    回复