企業微信 AES 加密 回調模式 細節決定成敗之Java踩坑日記(一)


		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 導致了換行符出現無限報錯 對不上。

哈哈哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章