參考:http://www.cnblogs.com/lori/archive/2011/09/08/2170979.html
問題,就是URL編碼問題,如果不對URL進行編碼直接加碼,那麼在解碼時,如果字串存在“+”這種特殊符號,在解碼時會出它替換成“ ”,此時在解密就會無法解開,導致錯誤的結果。
本人解決方法:
先對字元先加密,再url編碼,這時不會出現+號等字元,然後獲取引數後 直接 解密(因為獲取的引數就沒有%之類的了)即可,注意,此處我也不明白,估計是瀏覽器 自動 url解碼了??
部分程式碼如下:(具體des加密解密程式碼和url加密解密程式碼可檢視之前的問題)
加密:
long endTimes = System.currentTimeMillis()+1*24*3600*1000; String para = personname+";"+email+";"+endTimes; //先加密,再url轉碼,順序不能修改 String encode = UrlUtil.getURLEncoderString(DesUtil.encrypt(para));
解密:
String vc = context.getParameter("vc"); if(null!=vc){ try { //直接des解碼 String decode = DesUtil.decrypt(vc); List list = EmailUtil.parseContent(decode, ";"); } catch (Exception e) { e.printStackTrace(); context.setRequestAttribute("errorMsg", "連結無效!"); } }