微信小程序解密encryptedData 报错:pad block corrupted 解决方法

今天在开发小程序获取微信绑定的手机号时遇到异常:javax.crypto.BadPaddingException: pad block corrupted

折腾半天,突然想到是因为:

  1. 先通过getPhoneNumber获取了手机号的加密数据。
  2. 然后才调用的wx.login获取code。
  3. 再通过code取到用户的session_key 。
  4. 最后再用session_key,手机号的加密数据和向量解密获取手机号。

正确的做法应该是:

  1. 先才调用的wx.login获取code
  2. 然后再通过code取到用户的session_key 。
  3. 再通过getPhoneNumber获取了手机号的加密数据。
  4. 最后再用session_key,手机号的加密数据和向量解密获取手机号。

改完之后果然没有问题。


这是因为调用了wx.login后通过code获得的session_key是新的session_key.

所以,在调用wx.login之前获的加密数据不是用新得session_key加密的数据。

在调用wx.login之后获得的加密数据,才是新得的session_key加密的数据。

你可能感兴趣的:(微信小程序解密encryptedData 报错:pad block corrupted 解决方法)