標籤:java eds加密解密
package Encrypt;import java.security.*; import javax.crypto.*; import sun.misc.*;/** * 使用DES加密與解密,可對byte[],String類型進行加密與解密 * 密文可使用String,byte[]儲存. * 方法: * void getKey(String strKey)從strKey的字條產生一個Key * String getEncString(String strMing)對strMing進行加密,返回String密文 * String getDesString(String strMi)對strMin進行解密,返回String明文 * byte[] getEncCode(byte[] byteS)byte[]型的加密 * byte[] getDesCode(byte[] byteD)byte[]型的解密 */ public class Encrypt{ private Key key; private byte[] byteMi = null; private byte[] byteMing = null; private String strMi= ""; private String strM= ""; // 根據參數產生KEY public void setKey(String strKey){ try{ KeyGenerator _generator = KeyGenerator.getInstance("DES"); _generator.init(new SecureRandom(strKey.getBytes())); this.key = _generator.generateKey(); _generator=null; } catch(Exception e){ e.printStackTrace(); } } // 加密String明文輸入,String密文輸出 public void setEncString(String strMing){ BASE64Encoder base64en = new BASE64Encoder(); try { this.byteMing = strMing.getBytes("UTF8"); this.byteMi = this.getEncCode(this.byteMing); this.strMi = base64en.encode(this.byteMi); } catch(Exception e) { e.printStackTrace(); } finally { this.byteMing = null; this.byteMi = null; } } //加密以byte[]明文輸入,byte[]密文輸出 private byte[] getEncCode(byte[] byteS){ byte[] byteFina = null; Cipher cipher; try { cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE,key); byteFina = cipher.doFinal(byteS); } catch(Exception e) { e.printStackTrace(); } finally { cipher = null; } return byteFina; } // 解密:以String密文輸入,String明文輸出 public void setDesString(String strMi){ BASE64Decoder base64De = new BASE64Decoder(); try { this.byteMi = base64De.decodeBuffer(strMi); this.byteMing = this.getDesCode(byteMi); this.strM = new String(byteMing,"UTF8"); } catch(Exception e) { e.printStackTrace(); } finally { base64De = null; byteMing = null; byteMi = null; } } // 解密以byte[]密文輸入,以byte[]明文輸出 private byte[] getDesCode(byte[] byteD){ Cipher cipher; byte[] byteFina=null; try{ cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE,key); byteFina = cipher.doFinal(byteD); } catch(Exception e) { e.printStackTrace(); } finally { cipher=null; } return byteFina; } //返回加密後的密文strMi public String getStrMi() { return strMi; } //返回解密後的明文 public String getStrM() { return strM; } }