这篇文章主要为大家详细介绍了Java微信公众号安全模式消息解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  
  1.微信公众平台下载解密工具,导入项目中,根据demo解密消息
  
  public static String streamToString(HttpServletRequest request) throws IOException {
  
  BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
  
  StringBuilder sb = new StringBuilder();
  
  String line;
  
  try {
  
  while ((line = reader.readLine()) != null) {
  
  sb.append(line);
  
  }
  
  } catch (IOException e) {
  
  e.printStackTrace();
  
  }
  
  return sb.toString();
  
  }
  
  /**
  
  * xml转为map集合
  
  *
  
  * @param request
  
  * @param msg
  
  * @return
  
  * @throws IOException
  
  * @throws DocumentException
  
  */
  
  public static Map<String, String> xmlToMap(HttpServletRequest request,www.dfgjpt.com Message msg) throws Exception {
  
  SAXReader reader = new SAXReader(www.yongshi123.cn);
  
  String token = "";
  
  String encodingAesKey = "";
  
  String appId = "";
  
  //获取加密消息xml字符串
  
  /* String format = "<xml><ToUserName><www.mhylpt.com![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%1$s]]></Encrypt></xml>";
  
  Document document = reader.read(request.getInputStream());
  
  Element rootElement = document.getRootElement();
  
  Element encrypt = rootElement.element("Encrypt"www.68076.cn);*/
  
  // String fromXML = String.format(format, encrypt.getText());
  
  String fromXML = streamToString(www.68079.cn request);
  
  //解密消息
  
  WXBizMsgCrypt pc =www.jiahuayulpt.com new WXBizMsgCrypt(token, encodingAesKey, appId);
  
  //获得解密消息
  
  String result = pc.decryptMsg(msg.getMsg_signature(www.yongxin7.com), msg.getTimestamp(), msg.getNonce(), fromXML);
  
  Map<String, String> map = new HashMap<www.thd178.com>(6);
  
  //将解密后的消息转为xml
  
  Document doc www.tiaotiaoylzc.com= DocumentHelper.parseText(result);
  
  Element root = doc.getRootElement(www.078881.cn);
  
  List<Element> list = root.elements();
  
  for (Element e : list) {
  
  map.put(e.getName(), e.getText());
  
  }
  
  return map;
  
  }
  
  Message实体类
  
  package com.caisin.weixin.domain;
  
  import lombok.Data;
  
  @Data
  
  public class Message {
  
  private String signature;
  
  private String timestamp;
  
  private String nonce;
  
  private String openid;
  
  private String msg_signature;
  
  private String encrypt_type;
  
  }
  
  2.将JDK中 jdk\jre\lib\security\policy\unlimited目录中local_policy.jar和US_export_policy.jar两个文件拷贝到 jdk\jre\lib\security目录下
  
  以上就是本文的全部内容,希望对大家的学习有所帮助
  
  最后针对于互联网公司java程序员涉及到的绝大部分难题我做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。

最新文章

  1. event
  2. 读取手机上所有应用程序并显示(APP)
  3. 用通俗易懂的大白话讲解Map/Reduce原理
  4. IOS笔记之UIKit_UIScrollView
  5. Infragistics 汉化
  6. 你如何理解HTML结构的语义化?
  7. 【BZOJ 1006】[HNOI2008]神奇的国度
  8. javascript-02
  9. ORACLE STUDY NOTES 02
  10. Android - 视图Android应用(apk)签名
  11. Hadoop: failed on connection exception: java.net.ConnectException: Connection refuse
  12. Spring多种加载Bean方式简析
  13. Centos7安装mysql-5.7.19
  14. AndroidStudio3更改包名失败
  15. Android9.0新特性曝光,你准备好了吗
  16. 表单样式form.css
  17. SqlServer 全文索引指令大全(转载)
  18. BZOJ2460:[BJWC2011]元素(贪心,线性基)
  19. queue hardware os
  20. 如何在低速率网络中测试 Web 应用

热门文章

  1. 清除EasyUi combotree下拉树的值
  2. WPF loading遮罩层 LoadingMask
  3. linux 硬盘挂载
  4. Redis命令总结 (转)
  5. [Oracle]如何获得出现故障时,客户端的详细连接信息
  6. for循环两个略骚的写法
  7. Thrift_简介(基于C#)
  8. BugkuCTF 你必须让他停下
  9. Linux下通过受限bash创建指定权限的账号
  10. bootstrap是什么