<code>/* DES 加密、解密 */</code>
<code>/**</code>
<code> </code><code>* DES 加密</code>
<code> </code><code>* </code>
<code> </code><code>* @param data</code>
<code> </code><code>* 明文</code>
<code> </code><code>* @return</code>
<code> </code><code>* @throws Exception</code>
<code> </code><code>*/</code>
<code>public static String DESEncrypt(String data) throws Exception {</code>
<code> </code><code>try {</code>
<code> </code><code>// 生成一個可信任的随機數源</code>
<code> </code><code>SecureRandom sr = new SecureRandom();</code>
<code> </code><code>// 從原始密鑰資料建立DESKeySpec對象</code>
<code> </code><code>DESKeySpec dks = new DESKeySpec(KEY.getBytes());</code>
<code> </code><code>// 建立一個密鑰工廠,然後用它把DESKeySpec轉換成SecretKey對象</code>
<code> </code><code>SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");</code>
<code> </code><code>SecretKey securekey = keyFactory.generateSecret(dks);</code>
<code> </code><code>// Cipher對象實際完成加密操作</code>
<code> </code><code>Cipher cipher = Cipher.getInstance("DES");</code>
<code> </code><code>// 用密鑰初始化Cipher對象</code>
<code> </code><code>cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);</code>
<code> </code><code>// 加密資料</code>
<code> </code><code>String strs = new BASE64Encoder().encodeBuffer(cipher.doFinal(data.getBytes()));</code>
<code> </code><code>return strs;</code>
<code> </code><code>} catch (Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code> </code><code>return null;</code>
<code>}</code>
<code> </code><code>* DES 解密</code>
<code> </code><code>* 密文</code>
<code> </code><code>* @return 明文</code>
<code>public</code> <code>static</code> <code>String DESDecrypt(String data) </code><code>throws</code> <code>Exception, Exception {</code>
<code> </code><code>if</code> <code>(data == </code><code>null</code><code>)</code>
<code> </code><code>return</code> <code>null</code><code>;</code>
<code> </code><code>byte</code><code>[] buf = </code><code>new</code> <code>BASE64Decoder().decodeBuffer(data);</code>
<code> </code><code>// 生成一個可信任的随機數源</code>
<code> </code><code>SecureRandom sr = </code><code>new</code> <code>SecureRandom();</code>
<code> </code><code>// 從原始密鑰資料建立DESKeySpec對象</code>
<code> </code><code>DESKeySpec dks = </code><code>new</code> <code>DESKeySpec(KEY.getBytes());</code>
<code> </code><code>// 建立一個密鑰工廠,然後用它把DESKeySpec轉換成SecretKey對象</code>
<code> </code><code>SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(</code><code>"DES"</code><code>);</code>
<code> </code><code>SecretKey securekey = keyFactory.generateSecret(dks);</code>
<code> </code><code>// Cipher對象實際完成加密操作</code>
<code> </code><code>Cipher cipher = Cipher.getInstance(</code><code>"DES"</code><code>);</code>
<code> </code><code>// 用密鑰初始化Cipher對象</code>
<code> </code><code>cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);</code>
<code> </code><code>return</code> <code>new</code> <code>String(cipher.doFinal(buf));</code>
上面代碼在測試的時候,解密出現了亂碼,
建議采用自己對base64進行編碼格式控制,這樣就能夠保證加密,解密格式一緻,不會出現亂碼
。
本文轉自建波李 51CTO部落格,原文連結:http://blog.51cto.com/jianboli/1902082,如需轉載請自行聯系原作者