String msgSignature = request.getParameter("msg_signature");
String nonce = request.getParameter("nonce");
String timestamp = request.getParameter("timestamp");
String echostr = request.getParameter("echostr");
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
if (StringUtils.isNotBlank(echostr)) {
try {
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt("vqbyk2JG", "bG9IAGJT9XoytBRnbVzR5q7bgub755Fnj7Ny7IBVkzX", "wwc6ab8d2ebbe64348");
String sEchoStr = wxcpt.VerifyURL(msgSignature, nonce,timestamp, echostr);
System.out.println(sEchoStr);
System.out.println("===wwwww================");
response.getWriter().println(sEchoStr);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e);
}
// 企業號應用在開啓回調模式的時候,會傳遞加密echostr給服務器,企業應該對echostr參數解密並原樣返回echostr明文(不能加引號,不能帶bom頭,不能帶換行符),則接入驗證生效,回調模式才能開啓
System.out.println("====================");
//
return;
}
這是我使用企業微信提供的工具類進行的解密過程 點擊下載;
上面的代碼,打開一看是沒有什麼問題, 但是在請求企業微信後,一直提示明文不正確,到時無法進行下一步,昨天晚上一直在網上研究方法, 更換jce策略包、更換配置等等等。 進行到8點鐘,一直沒進展,企業微信客服也下班了,就回去了。
今天重新研究,從頭到尾排查可能性, 最後的最後, 真的是細節成敗,希望你們也注意
response.getWriter().println(sEchoStr); 就是這一句導致無法驗證???
至於爲什麼,相信有大神已經看出來了。 就是因爲println而不是print 導致了換行符出現無限報錯 對不上。
哈哈哈哈