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

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

javax.crypto.BadPaddingException: pad block corrupted
	at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher.doFinal(Unknown Source)
	at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)
	at javax.crypto.Cipher.doFinal(Cipher.java:2087)
	at com.saic.ebiz.service.util.AESUtils.getUserInfo(AESUtils.java:62)
	at com.saic.ebiz.service.util.AESUtils.main(AESUtils.java:86)

原因查找:

根据官方文档提示:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

最终找到问题原因:因为前端在调用getPhoneNumber成功之后回调wx.login去登录,这就导致了登录被刷新,此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

解决办法:和前端商量。先去调用wx.login,然后再去调用其他接口。

你可能感兴趣的:(报错)