用JAVA實現的DES加密解密演算法

來源:互聯網
上載者:User

標籤: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;  } }  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.