小程序手机号解密 偶发性解密异常?
发布于 7 年前 作者 schen 6206 次浏览 来自 官方Issues

 javax.crypto.BadPaddingException: Given final block not properly padded

后台解密 偶尔解密失败  重新调用都是成功的

byte[] encData =  Base64.decodeBase64(encryptedData);
byte[] ivStr = Base64.decodeBase64(iv);
byte[] key = Base64.decodeBase64(sessionKey);
AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivStr);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
String dataResult = new  String(cipher.doFinal(encData),"UTF-8");
5 回复

你好 我也遇到了这个问题 我用的 python3 官方sdk, 但是偶尔会出现这种情况

麻烦问一下,解决没有呢? 我这边也是偶然发生!

我来告诉大家这个问题的根本原因是什么,前端传给你的参数有三个一个code  一个iv 一个加密的字符串,用code换取sessionkey再解密加密数据,解密失败的时候,你不妨拿你上一次的sessionkey来解密试试 你会发现 竟然解密成功。其实就是前端在上一个code还没过期的情况下获取的手机号加密数据,然后发给你的时候又重新获取了一个code跟加密数据一起传给你。

失败提示

解决了没有啊 我也遇到了QAQ

回到顶部