java微信小程序用户信息解密遇见“javax.crypto.IllegalBlockSizeException: last block incomplete in decryption”报错

问题:

在微信小程序获取到   encryptedData,  sessionKey,    iv  后,对获取到的用户信息进行解密的时候出现“javax.crypto.IllegalBlockSizeException: last block incomplete in decryption”的错误

解决:

1.(无用的操作)首先在网上搜,基本没有什么有用的回答,基本上都回答说传的数据有问题,微信传输的数据不太可能出问题

2.(无用的操作)还有的说是jre虚拟机中的解密算法不对,需要在我们的jdk中添加两个jar包,我当时深信是这个问题,但经过一系列的操作之后,将两个jar包导入后java直接运行不起来了,然后看网上说只有“java.security.InvalidKeyException Illegal key size”这个问题才是jdk的问题,直接pass

3.(解决)我们前端获取到的 encryptedData,  sessionKey,    iv 这三个数据是没问题的,但前端传给我们后端后,进行打印发现字符串的  “+ ” 全部变成了空格,这样数据肯定是有问题的,我们后端要进行数据的处理,将 空格  变成  “+”,这样数据才是正确的(如果更改后运行还是报这个错误,看4)

4.(解决)如果进行了 3  确定数据传输过来后 ,数据没问题  , 还是报这个错误  ,那么要确定前端获取 sessionKey  和  encryptedData ,   iv  的顺序是否正确,一定要先获取到sessionKey在获取到 encryptedData ,   iv ,而且在获取到这三个数据后,前端在我们进行解密前不能再次调用wx.login,如果再次调用了,那么sessionKey就会改变,还是无法解密

补充:

使用的“解密工具类”是复制的下面文章的代码

JAVA 微信小程序 解密 用户信息encryptedData_小目标青年的博客-CSDN博客

你可能感兴趣的:(微信小程序,小程序,java)