代碼來自以下鏈接
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"的位置。