小程序
小游戏
企业微信
微信支付
扫描小程序码分享
一直报错javax.crypto.IllegalBlockSizeException: last block incomplete in decryption
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
兄弟 ,我也遇到同样问题,你解决了吗?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
@RequestMapping("/binding/mobilePhone")
@ResponseBody
public Object mobilePhone(HttpServletRequest request, String encryptedData, String iv, String session_key, String openid) {
// System.out.println("encryptedData:"+encryptedData+" iv:"+iv+" session_key:"+session_key+" openid:"+openid);
JSONObject obj = this.weChatService.getPhoneNumber(session_key, encryptedData, iv);
String phone = obj.get("phoneNumber").toString();
User user = this.uuserService.getUser(openid);
if (ToolUtil.isNotEmpty(user)) {
user.setPhone(phone);
return this.uuserService.update(user);
}
return null;
public JSONObject getPhoneNumber(String session_key, String encryptedData, String iv) { byte[] dataByte = Base64.decode(encryptedData); byte[] keyByte = Base64.decode(session_key); byte[] ivByte = Base64.decode(iv); try { int base = 16; if (keyByte.length % base != 0) { int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0); byte[] temp = new byte[groups * base]; Arrays.fill(temp, (byte) 0); System.arraycopy(keyByte, 0, temp, 0, keyByte.length); keyByte = temp; } // 初始化 Security.addProvider(new BouncyCastleProvider()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec spec = new SecretKeySpec(keyByte, "AES"); AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES"); parameters.init(new IvParameterSpec(ivByte)); cipher.init(Cipher.DECRYPT_MODE, spec, parameters); byte[] resultByte = cipher.doFinal(dataByte); if (null != resultByte && resultByte.length > 0) { String result = new String(resultByte, "UTF-8"); return JSONObject.parseObject(result); } } catch (Exception e) { e.printStackTrace(); } return null; }
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
兄弟 ,我也遇到同样问题,你解决了吗?
@RequestMapping("/binding/mobilePhone")
@ResponseBody
public Object mobilePhone(HttpServletRequest request, String encryptedData, String iv, String session_key, String openid) {
// System.out.println("encryptedData:"+encryptedData+" iv:"+iv+" session_key:"+session_key+" openid:"+openid);
JSONObject obj = this.weChatService.getPhoneNumber(session_key, encryptedData, iv);
String phone = obj.get("phoneNumber").toString();
User user = this.uuserService.getUser(openid);
if (ToolUtil.isNotEmpty(user)) {
user.setPhone(phone);
return this.uuserService.update(user);
}
return null;
}
public JSONObject getPhoneNumber(String session_key, String encryptedData, String iv) { byte[] dataByte = Base64.decode(encryptedData); byte[] keyByte = Base64.decode(session_key); byte[] ivByte = Base64.decode(iv); try { int base = 16; if (keyByte.length % base != 0) { int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0); byte[] temp = new byte[groups * base]; Arrays.fill(temp, (byte) 0); System.arraycopy(keyByte, 0, temp, 0, keyByte.length); keyByte = temp; } // 初始化 Security.addProvider(new BouncyCastleProvider()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec spec = new SecretKeySpec(keyByte, "AES"); AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES"); parameters.init(new IvParameterSpec(ivByte)); cipher.init(Cipher.DECRYPT_MODE, spec, parameters); byte[] resultByte = cipher.doFinal(dataByte); if (null != resultByte && resultByte.length > 0) { String result = new String(resultByte, "UTF-8"); return JSONObject.parseObject(result); } } catch (Exception e) { e.printStackTrace(); } return null; }