直接贴代码看:
在wxDecrypt方法的返回String字符串的时候,没有加utf-8的时候,是乱码,加了以后就解决了

import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Key;
import java.security.Security;

public class AES128Util {
// 算法名
public static final String KEY_NAME = “AES”;
// 加解密算法/模式/填充方式
// ECB模式只用密钥即可对数据进行加密解密,CBC模式需要添加一个iv
public static final String CIPHER_ALGORITHM = “AES/CBC/PKCS7Padding”;

/*** 微信 数据解密<br/>* 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充<br/>* 对称解密的目标密文:encrypted=Base64_Decode(encryptData)<br/>* 对称解密秘钥:key = Base64_Decode(session_key),aeskey是16字节<br/>* 对称解密算法初始向量:iv = Base64_Decode(iv),同样是16字节<br/>** @param encrypted 目标密文* @param session_key 会话ID* @param iv 加密算法的初始向量*/
public static String wxDecrypt(String encrypted, String session_key, String iv) {String json = null;byte[] encrypted64 = Base64.decodeBase64(encrypted);byte[] key64 = Base64.decodeBase64(session_key);byte[] iv64 = Base64.decodeBase64(iv);try {init();json = new String(decrypt(encrypted64, key64, generateIV(iv64)),"UTF-8");} catch (Exception e) {System.out.println("解密微信手机号失败:" + e.getMessage());}return json;
}/*** 初始化密钥*/
public static void init() throws Exception {Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());KeyGenerator.getInstance(KEY_NAME).init(128);
}/*** 生成iv*/
public static AlgorithmParameters generateIV(byte[] iv) throws Exception {// iv 为一个 16 字节的数组,这里采用和 iOS 端一样的构造方法,数据全为0// Arrays.fill(iv, (byte) 0x00);AlgorithmParameters params = AlgorithmParameters.getInstance(KEY_NAME);params.init(new IvParameterSpec(iv));return params;
}/*** 生成解密*/
public static byte[] decrypt(byte[] encryptedData, byte[] keyBytes, AlgorithmParameters iv)throws Exception {Key key = new SecretKeySpec(keyBytes, KEY_NAME);Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);// 设置为解密模式cipher.init(Cipher.DECRYPT_MODE, key, iv);return cipher.doFinal(encryptedData);
}

}

微信小程序解密出来是乱码的问题相关推荐

  1. java微信小程序解密AES/CBC/PKCS7Padding

    摘要:微信小程序解密建议使用1.6及以上的环境使用maven下载jar包org.bouncycastlebcprov-jdk15on1.55加密类代码importorg.bouncycastle.jc ...

  2. 微信小程序解密用户信息--java解密

    1.wx.login()方法获取code,通过code换取session_key 2.wx.getUserInfo()方法获取: encryptedData 包括敏感数据在内的完整用户信息的加密数据 ...

  3. 微信小程序解密过程(java)

    方法一 package com.ecarpo.bms.wx.common;import java.security.AlgorithmParameters; import java.security. ...

  4. 微信小程序解密并拆包获取源码教程

    第一步:电脑端提取微信小程序包 一般在微信安装目录下的,比如我微信安装在d盘当中,那么下载的wxapkg包就在下方 D:\qq\wechatfile\WeChat Files\Applet 那么微信小 ...

  5. 转载:微信小程序解密失败

    微信小程序登录解密异常 </div> </div> <article class="baidu_pl"><div id="art ...

  6. 微信小程序--解密用户信息

    获取用户encryptKey | 微信开放文档 (qq.com) 一.需求 前端传值:encryptedData.iv.code 二.解密用户信息 step1:将code发送给微信服务器,获取open ...

  7. 微信小程序解密手机号码异常

    在后台解密用户手机号码时,偶尔会报以下异常: javax.crypto.BadPaddingException: Given final block not properly padded. Such ...

  8. 微信小程序解密encryptedData报错pad block corrupted

    前要: 今天调试一下微信授权登录的时候老是第一次报错解密失败pad block corrupted,第二次授权的时候正常,因为第一次已经获取到手机号码! 后端代码: public static JSO ...

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

    今天碰到一个pad block corrupted错误,跟代码发现是Cipher里面的doFinal()爆出的错. 代码: public static JSONObject getUserInfo(S ...

最新文章

  1. mysql udf提权_mysql——udf提权
  2. 费用流-Wannafly Day2 TwoGraph-神题
  3. .h .dll .lib
  4. 关于VC预定义常量_WIN32,WIN32,_WIN64等预定义宏的介绍(整理、转载)
  5. 求整数 在二进制表示中有多少个1的方法
  6. ad16不能去除铺铜_海水小讲堂006 铜离子的正确使用姿势
  7. @column注解_SpringBoot 注解方式快速整合Mybatis
  8. mbed OS - ARM关于物联网(IoT)的战略布局
  9. 掌握这个分析方法,数据分析就学会了一半
  10. python基础7-函数
  11. php留言板源码免mysql_php留言本源码-夏日PHP+Mysql留言本下载 v0.3免费版--pc6下载站...
  12. css srcset,研究一下响应式图片加载属性srcset和sizes_html/css_WEB-ITnose
  13. DotNet开发的微商分销系统源码,微信三级分销系统源码
  14. 有专门收C语言答案的软件吗,C语言二级考试题库APP
  15. 【Unity 学习笔记】01 素材的导入和常见功能
  16. 云坤科技助建“i慧湖”区域创新服务平台
  17. Go 微服务开发框架 DMicro 的设计思路
  18. Kafka CPU使用率高排查思路及解决方案
  19. Android 网络小说阅读APP实现详解
  20. 用ch341a刷写主板bios

热门文章

  1. 【SVAC】千目聚云:SVAC2.0已来 未来发展道路一片光明
  2. 【C#】未能添加对“*.dll”的引用。请确保此文件可访问并且是一个有效的程序集或 COM 组件。
  3. 校内互测题 by LMY (FSN)
  4. 秦令令:移动营销跨越之年
  5. 遗传算法(三)——基本遗传算法
  6. 南京大学比中科大计算机与科学专业,教育部直属:16所“软件工程”专业强校,浙大、南大、中科大上榜...
  7. c语言程序题在哪儿搜,国家二级计算机考试c语言题库
  8. 【深度学习】深度学习:技术原理、迭代路径与局限
  9. 应用程序“Parallels Desktop“无法打开MAC电脑打不开
  10. SVG 2D入门4 - 笔画与填充