DES加密後get獲取url引數無法解密問題

java_lover發表於2015-03-17

 

參考: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", "連結無效!");
            }
        }

 

相關文章