DesUtil.java關於漢字加密解密出現亂碼的問題 des+base64加密


代碼來自以下鏈接
http://www.oschina.net/code/piece_full?code=18383#30455

首先聲明的是,代碼不是本人寫的,感謝一下作者,我的是一個JavaWeb項目,與服務器servlet接口通信的項目時,對協議作了des+base64加密處理,使用了該類,
期間遇到了一個比較糾結的問題,就是如果漢字存在於協議中,服務器加密,客戶端解密會出現亂碼,客戶端加密,服務器解密亦然。


以上問題的解決其實很簡單,只不過找問題原因的過程有點浪費時間,所以記錄在此,以告知其他有緣也用到該類的朋友,能夠節省一點寶貴的時間。

修改代碼如下:

 1 /**
 2      * Description 根據鍵值進行加密
 3      * 
 4      * @param data
 5      * @param key
 6      *            加密鍵byte數組
 7      * @return
 8      * @throws Exception
 9      */
10     public static String encrypt(String data, String key) throws Exception {
11         byte[] bt = encrypt(data.getBytes("UTF-8"), key.getBytes());
12         String strs = new BASE64Encoder().encode(bt);
13         return strs;
14     }
15 
16     /**
17      * Description 根據鍵值進行解密
18      * 
19      * @param data
20      * @param key
21      *            加密鍵byte數組
22      * @return
23      * @throws IOException
24      * @throws Exception
25      */
26     public static String decrypt(String data, String key) throws IOException,
27             Exception {
28         if (data == null)
29             return null;
30         BASE64Decoder decoder = new BASE64Decoder();
31         byte[] buf = decoder.decodeBuffer(data);
32         byte[] bt = decrypt(buf,key.getBytes());
33         return new String(bt, "UTF-8");
34     }

注意:修改的兩處為"UTF-8"的位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM