Java微信公衆號安全模式消息解密

這篇文章主要爲你們詳細介紹了Java微信公衆號安全模式消息解密,具備必定的參考價值,感興趣的小夥伴們能夠參考一下

1.微信公衆平臺下載解密工具,導入項目中,根據demo解密消息java

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, Message msg) throws Exception {
  SAXReader reader = new SAXReader();
  String token = "";
  String encodingAesKey = "";
  String appId = "";
  //獲取加密消息xml字符串
  /* String format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%1$s]]></Encrypt></xml>";
  Document document = reader.read(request.getInputStream());
  Element rootElement = document.getRootElement();
  Element encrypt = rootElement.element("Encrypt");*/
//  String fromXML = String.format(format, encrypt.getText());
  String fromXML = streamToString(request);
  //解密消息
  WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId);
  //得到解密消息
  String result = pc.decryptMsg(msg.getMsg_signature(), msg.getTimestamp(), msg.getNonce(), fromXML);
  Map<String, String> map = new HashMap<>(6);
  //將解密後的消息轉爲xml
  Document doc = DocumentHelper.parseText(result);
  Element root = doc.getRootElement();
  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中 jdkjrelibsecuritypolicyunlimited目錄中local_policy.jar和US_export_policy.jar兩個文件拷貝到 jdkjrelibsecurity目錄下

以上就是本文的所有內容,但願對你們的學習有所幫助程序員

最後針對於互聯網公司java程序員涉及到的絕大部分難題我作成了文檔和架構視頻資料免費分享給你們(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術資料),但願能幫助到且找到一個好的工做,也節省你們在網上搜索資料的時間來學習,也能夠關注我一下之後會有更多幹貨分享。安全

相關文章
相關標籤/搜索