温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中的解密微信和加密数据工具类

发布时间:2021-06-24 09:09:53 来源:亿速云 阅读:232 作者:chen 栏目:开发技术

本篇内容主要讲解“Java中解密微信和加密数据工具类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中解密微信和加密数据工具类”吧!

当我们开发微信公众号,小程序等,微信返回给我们的数据往往是经过加密的,我们需要使用 sessionKey 配合解密,才能得到我们想要的数据

1、引入依赖

<!-- lombok依赖 --> <dependency>     <groupId>org.projectlombok</groupId>     <artifactId>lombok</artifactId>     <optional>true</optional> </dependency> <!-- alibaba的fastjson --> <dependency>     <groupId>com.alibaba</groupId>     <artifactId>fastjson</artifactId>     <version>1.2.60</version> </dependency> <!-- 工具包 --> <dependency>     <groupId>org.apache.commons</groupId>     <artifactId>commons-lang3</artifactId>     <version>3.8.1</version> </dependency> <!-- rsa加密工具--> <dependency>     <groupId>org.bouncycastle</groupId>     <artifactId>bcprov-jdk15on</artifactId>     <version>1.55</version> </dependency>

2、解密工具类

import com.alibaba.fastjson.JSONObject; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.AlgorithmParameters; import java.security.Security; import java.util.Arrays; /**  * 解密微信加密数据工具类  */ @Slf4j public class WechatUtils {     /**      * 解密微信加密数据      *      * @param encryptedData      * @param iv      * @param sessionkey      * @return      */     public static JSONObject decryptWechatData(String encryptedData, String iv, String sessionkey) {         // 被加密的数据         byte[] dataByte = Base64.decode(encryptedData);         // 加密秘钥         byte[] keyByte = Base64.decode(sessionkey);         // 偏移量         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/PKCS7Padding", "BC");             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");                 if (StringUtils.isNotBlank(result)) {                     log.info("----------解密微信数据成功----------");                     return JSONObject.parseObject(result);                 }             }         } catch (Exception e) {             e.printStackTrace();             log.info("----------解密微信数据失败----------");         }         return null;     } }

这样,我们将微信加密的数据,转化成了 JSON 对象,就得到了我们想要的数据了

到此,相信大家对“Java中解密微信和加密数据工具类”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI