js前端3des加密 後台java解密

來源:互聯網
上載者:User

標籤:

import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESedeKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;    /**   * des加密解密   *    * @author   *    */  public class DesEncrypt {        Key key;        public DesEncrypt(String str) {          setKey(str);// 產生密匙      }        public DesEncrypt() {          setKey("abc123.*abc123.*abc123.*abc123.*");      }        /**       * 根據參數產生KEY       */      public void setKey(String strKey) {          try {         //對比DES            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");              this.key  = keyFactory.generateSecret(new DESedeKeySpec(strKey.getBytes("UTF8")));          } catch (Exception e) {              throw new RuntimeException(                      "Error initializing SqlMap class. Cause: " + e);          }      }              /**       * 加密String明文輸入,String密文輸出       */      public String encrypt(String strMing) {          byte[] byteMi = null;          byte[] byteMing = null;          String strMi = "";          BASE64Encoder base64en = new BASE64Encoder();          try {              byteMing = strMing.getBytes("UTF8");              byteMi = this.getEncCode(byteMing);              strMi = base64en.encode(byteMi);          } catch (Exception e) {              throw new RuntimeException(                      "Error initializing SqlMap class. Cause: " + e);          } finally {              base64en = null;              byteMing = null;              byteMi = null;          }          return strMi;      }        /**       * 解密 以String密文輸入,String明文輸出       *        * @param strMi       * @return       */      public String decrypt(String strMi) {          BASE64Decoder base64De = new BASE64Decoder();          byte[] byteMing = null;          byte[] byteMi = null;          String strMing = "";          try {              byteMi = base64De.decodeBuffer(strMi);              byteMing = this.getDesCode(byteMi);              strMing = new String(byteMing, "UTF8");          } catch (Exception e) {              throw new RuntimeException(                      "Error initializing SqlMap class. Cause: " + e);          } finally {              base64De = null;              byteMing = null;              byteMi = null;          }          return strMing;      }        /**       * 加密以byte[]明文輸入,byte[]密文輸出       *        * @param byteS       * @return       */      private byte[] getEncCode(byte[] byteS) {          byte[] byteFina = null;          Cipher cipher;          try {//對比DES             cipher = Cipher.getInstance("DESede");              cipher.init(Cipher.ENCRYPT_MODE, key,SecureRandom.getInstance("SHA1PRNG"));              byteFina = cipher.doFinal(byteS);          } catch (Exception e) {              throw new RuntimeException(                      "Error initializing SqlMap class. Cause: " + e);          } finally {              cipher = null;          }          return byteFina;      }        /**       * 解密以byte[]密文輸入,以byte[]明文輸出       *        * @param byteD       * @return       */      private byte[] getDesCode(byte[] byteD) {          Cipher cipher;          byte[] byteFina = null;          try {//對比DES            cipher = Cipher.getInstance("DESede");              cipher.init(Cipher.DECRYPT_MODE, key,SecureRandom.getInstance("SHA1PRNG"));              byteFina = cipher.doFinal(byteD);          } catch (Exception e) {              throw new RuntimeException(                      "Error initializing SqlMap class. Cause: " + e);          } finally {              cipher = null;          }          return byteFina;      }                public static void main(String args[])  {          DesEncrypt des = new DesEncrypt();            String str1 = "asssAAASSS.*/中";          // DES加密          String str2 = des.encrypt(str1);          DesEncrypt des1 = new DesEncrypt();          String deStr = des1.decrypt(str2);          System.out.println("密文:" + str2);          // DES解密          System.out.println("明文:" + deStr);           }    }  


DES的密鑰長度為8位,3DES密鑰長度為32位。

3DES密鑰材料密鑰工廠,密碼編譯演算法不同。


前端js加密



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

js前端3des加密 後台java解密

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.