<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • java證書的加密與解密代碼

    時間:2024-06-12 02:18:55 J2EE培訓(xùn) 我要投稿
    • 相關(guān)推薦

    java證書的加密與解密代碼

      java很多時候要對秘要進(jìn)行持久化加密,此時的加密采用md5。采用對稱加密的時候就采用DES方法了,那么java證書的加密與解密代碼是什么呢?下面跟yjbys小編一起來學(xué)習(xí)一下吧!

      以下兩個類可以很方便的完成字符串的加密和解密:

      加密:CryptHelper.encrypt(password)

      解密:CrypHelper.decrypt(password)

      代碼如下:

      CryptUtils.java

      [java]

      package com.gdie.lab.crypt;

      import java.io.IOException;

      import javax.crypto.Cipher;

      import javax.crypto.KeyGenerator;

      import javax.crypto.SecretKey;

      import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

      public class CryptUtils {

      private static String Algorithm = "DES";

      private static byte[] DEFAULT_KEY=new byte[] {-53, 122, -42, -88, -110, -123, -60, -74};

      private static String VALUE_ENCODING="UTF-8";

      /**

      * 生成密鑰

      *

      * @return byte[] 返回生成的密鑰

      * @throws exception

      * 扔出異常.

      */

      public static byte[] getSecretKey() throws Exception {

      KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);

      SecretKey deskey = keygen.generateKey();

      // if (debug ) System.out.println ("生成密鑰:"+byte2hex (deskey.getEncoded

      // ()));

      return deskey.getEncoded();

      }

      /**

      * 將指定的數(shù)據(jù)根據(jù)提供的密鑰進(jìn)行加密

      *

      * @param input

      * 需要加密的數(shù)據(jù)

      * @param key

      * 密鑰

      * @return byte[] 加密后的數(shù)據(jù)

      * @throws Exception

      */

      public static byte[] encryptData(byte[] input, byte[] key) throws Exception {

      SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key, Algorithm);

      // if (debug )

      // {

      // System.out.println ("加密前的二進(jìn)串:"+byte2hex (input ));

      // System.out.println ("加密前的字符串:"+new String (input ));

      //

      // }

      Cipher c1 = Cipher.getInstance(Algorithm);

      c1.init(Cipher.ENCRYPT_MODE, deskey);

      byte[] cipherByte = c1.doFinal(input);

      // if (debug ) System.out.println ("加密后的二進(jìn)串:"+byte2hex (cipherByte ));

      return cipherByte;

      }

      public static byte[] encryptData(byte[] input) throws Exception {

      return encryptData(input, DEFAULT_KEY);

      }

      /**

      * 將給定的已加密的數(shù)據(jù)通過指定的密鑰進(jìn)行解密

      *

      * @param input

      * 待解密的數(shù)據(jù)

      * @param key

      * 密鑰

      * @return byte[] 解密后的數(shù)據(jù)

      * @throws Exception

      */

      public static byte[] decryptData(byte[] input, byte[] key) throws Exception {

      SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key, Algorithm);

      // if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));

      Cipher c1 = Cipher.getInstance(Algorithm);

      c1.init(Cipher.DECRYPT_MODE, deskey);

      byte[] clearByte = c1.doFinal(input);

      // if (debug )

      // {

      // System.out.println ("解密后的二進(jìn)串:"+byte2hex (clearByte ));

      // System.out.println ("解密后的字符串:"+(new String (clearByte )));

      //

      // }

      return clearByte;

      }

      public static byte[] decryptData(byte[] input) throws Exception {

      return decryptData(input, DEFAULT_KEY);

      }

      /**

      * 字節(jié)碼轉(zhuǎn)換成16進(jìn)制字符串

      *

      * @param byte[] b 輸入要轉(zhuǎn)換的字節(jié)碼

      * @return String 返回轉(zhuǎn)換后的16進(jìn)制字符串

      */

      public static String byte2hex(byte[] bytes) {

      StringBuilder hs = new StringBuilder();

      for(byte b : bytes)

      hs.append(String.format("%1$02X", b));

      return hs.toString();

      }

      public static byte[] hex2byte(String content) {

      int l=content.length()>>1;

      byte[] result=new byte[l];

      for(int i=0;i

      int j=i<<1;

      String s=content.substring(j, j+2);

      result[i]=Integer.valueOf(s, 16).byteValue();

      }

      return result;

      }

      /**

      * 將字節(jié)數(shù)組轉(zhuǎn)換為base64編碼字符串

      * @param buffer

      * @return

      */

      public static String bytesToBase64(byte[] buffer) {

      //BASE64Encoder en=new BASE64Encoder();

      return Base64.encode(buffer);

      // return encoder.encode(buffer);

      }

      /**

      * 將base64編碼的字符串解碼為字節(jié)數(shù)組

      * @param value

      * @return

      * @throws IOException

      */

      public static byte[] base64ToBytes(String value) throws IOException {

      //return Base64.decodeToByteArray(value);

      // System.out.println(decoder.decodeBuffer(value));

      // return decoder.decodeBuffer(value);

      return Base64.decode(value);

      }

      /**

      * 加密給定的字符串

      * @param value

      * @return 加密后的base64字符串

      */

      public static String encryptString(String value) {

      return encryptString(value, DEFAULT_KEY);

      }

      /**

      * 根據(jù)給定的密鑰加密字符串

      * @param value 待加密的字符串

      * @param key 以BASE64形式存在的密鑰

      * @return 加密后的base64字符串

      * @throws IOException

      */

      public static String encryptString(String value, String key) throws IOException {

      return encryptString(value, base64ToBytes(key));

      }

      /**

      * 根據(jù)給定的密鑰加密字符串

      * @param value 待加密的字符串

      * @param key 字節(jié)數(shù)組形式的密鑰

      * @return 加密后的base64字符串

      */

      public static String encryptString(String value, byte[] key) {

      try {

      byte[] data=value.getBytes(VALUE_ENCODING);

      data=CryptUtils.encryptData(data, key);

      return bytesToBase64(data);

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      return null;

      }

      }

      /**

      * 解密字符串

      * @param value base64形式存在的密文

      * @return 明文

      */

      public static String decryptString(String value) {

      return decryptString(value, DEFAULT_KEY);

      }

      /**

      * 解密字符串

      * @param value base64形式存在的密文

      * @param key base64形式存在的密鑰

      * @return 明文

      * @throws IOException

      */

      public static String decryptString(String value, String key) throws IOException {

      String s=decryptString(value, base64ToBytes(key));

      return s;

      }

      /**

      * 解密字符串

      * @param value base64形式存在的密文

      * @param key 字節(jié)數(shù)據(jù)形式存在的密鑰

      * @return 明文

      */

      public static String decryptString(String value, byte[] key) {

      try {

      byte[] data=base64ToBytes(value);

      data=CryptUtils.decryptData(data, key);

      return new String(data, VALUE_ENCODING);

      }catch(Exception e) {

      e.printStackTrace();

      return null;

      }

      }

      }

      package com.gdie.lab.crypt;

      import java.io.IOException;

      import javax.crypto.Cipher;

      import javax.crypto.KeyGenerator;

      import javax.crypto.SecretKey;

      import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

      public class CryptUtils {

      private static String Algorithm = "DES";

      private static byte[] DEFAULT_KEY=new byte[] {-53, 122, -42, -88, -110, -123, -60, -74};

      private static String VALUE_ENCODING="UTF-8";

      /**

      * 生成密鑰

      *

      * @return byte[] 返回生成的密鑰

      * @throws exception

      * 扔出異常.

      */

      public static byte[] getSecretKey() throws Exception {

      KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);

      SecretKey deskey = keygen.generateKey();

      // if (debug ) System.out.println ("生成密鑰:"+byte2hex (deskey.getEncoded

      // ()));

      return deskey.getEncoded();

      }

      /**

      * 將指定的數(shù)據(jù)根據(jù)提供的密鑰進(jìn)行加密

      *

      * @param input

      * 需要加密的數(shù)據(jù)

      * @param key

      * 密鑰

      * @return byte[] 加密后的數(shù)據(jù)

      * @throws Exception

      */

      public static byte[] encryptData(byte[] input, byte[] key) throws Exception {

      SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key, Algorithm);

      // if (debug )

      // {

      // System.out.println ("加密前的二進(jìn)串:"+byte2hex (input ));

      // System.out.println ("加密前的字符串:"+new String (input ));

      //

      // }

      Cipher c1 = Cipher.getInstance(Algorithm);

      c1.init(Cipher.ENCRYPT_MODE, deskey);

      byte[] cipherByte = c1.doFinal(input);

      // if (debug ) System.out.println ("加密后的二進(jìn)串:"+byte2hex (cipherByte ));

      return cipherByte;

      }

      public static byte[] encryptData(byte[] input) throws Exception {

      return encryptData(input, DEFAULT_KEY);

      }

      /**

      * 將給定的已加密的數(shù)據(jù)通過指定的密鑰進(jìn)行解密

      *

      * @param input

      * 待解密的數(shù)據(jù)

      * @param key

      * 密鑰

      * @return byte[] 解密后的數(shù)據(jù)

      * @throws Exception

      */

      public static byte[] decryptData(byte[] input, byte[] key) throws Exception {

      SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key, Algorithm);

      // if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));

      Cipher c1 = Cipher.getInstance(Algorithm);

      c1.init(Cipher.DECRYPT_MODE, deskey);

      byte[] clearByte = c1.doFinal(input);

      // if (debug )

      // {

      // System.out.println ("解密后的二進(jìn)串:"+byte2hex (clearByte ));

      // System.out.println ("解密后的字符串:"+(new String (clearByte )));

      //

      // }

      return clearByte;

      }

      public static byte[] decryptData(byte[] input) throws Exception {

      return decryptData(input, DEFAULT_KEY);

      }

      /**

      * 字節(jié)碼轉(zhuǎn)換成16進(jìn)制字符串

      *

      * @param byte[] b 輸入要轉(zhuǎn)換的字節(jié)碼

      * @return String 返回轉(zhuǎn)換后的16進(jìn)制字符串

      */

      public static String byte2hex(byte[] bytes) {

      StringBuilder hs = new StringBuilder();

      for(byte b : bytes)

      hs.append(String.format("%1$02X", b));

      return hs.toString();

      }

      public static byte[] hex2byte(String content) {

      int l=content.length()>>1;

      byte[] result=new byte[l];

      for(int i=0;i

      int j=i<<1;

      String s=content.substring(j, j+2);

      result[i]=Integer.valueOf(s, 16).byteValue();

      }

      return result;

      }

      /**

      * 將字節(jié)數(shù)組轉(zhuǎn)換為base64編碼字符串

      * @param buffer

      * @return

      */

      public static String bytesToBase64(byte[] buffer) {

      //BASE64Encoder en=new BASE64Encoder();

      return Base64.encode(buffer);

      // return encoder.encode(buffer);

      }

      /**

      * 將base64編碼的字符串解碼為字節(jié)數(shù)組

      * @param value

      * @return

      * @throws IOException

      */

      public static byte[] base64ToBytes(String value) throws IOException {

      //return Base64.decodeToByteArray(value);

      // System.out.println(decoder.decodeBuffer(value));

      // return decoder.decodeBuffer(value);

      return Base64.decode(value);

      }

      /**

      * 加密給定的字符串

      * @param value

      * @return 加密后的base64字符串

      */

      public static String encryptString(String value) {

      return encryptString(value, DEFAULT_KEY);

      }

      /**

      * 根據(jù)給定的密鑰加密字符串

      * @param value 待加密的字符串

      * @param key 以BASE64形式存在的密鑰

      * @return 加密后的base64字符串

      * @throws IOException

      */

      public static String encryptString(String value, String key) throws IOException {

      return encryptString(value, base64ToBytes(key));

      }

      /**

      * 根據(jù)給定的密鑰加密字符串

      * @param value 待加密的字符串

      * @param key 字節(jié)數(shù)組形式的密鑰

      * @return 加密后的base64字符串

      */

      public static String encryptString(String value, byte[] key) {

      try {

      byte[] data=value.getBytes(VALUE_ENCODING);

      data=CryptUtils.encryptData(data, key);

      return bytesToBase64(data);

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      return null;

      }

      }

      /**

      * 解密字符串

      * @param value base64形式存在的密文

      * @return 明文

      */

      public static String decryptString(String value) {

      return decryptString(value, DEFAULT_KEY);

      }

      /**

      * 解密字符串

      * @param value base64形式存在的密文

      * @param key base64形式存在的密鑰

      * @return 明文

      * @throws IOException

      */

      public static String decryptString(String value, String key) throws IOException {

      String s=decryptString(value, base64ToBytes(key));

      return s;

      }

      /**

      * 解密字符串

      * @param value base64形式存在的密文

      * @param key 字節(jié)數(shù)據(jù)形式存在的密鑰

      * @return 明文

      */

      public static String decryptString(String value, byte[] key) {

      try {

      byte[] data=base64ToBytes(value);

      data=CryptUtils.decryptData(data, key);

      return new String(data, VALUE_ENCODING);

      }catch(Exception e) {

      e.printStackTrace();

      return null;

      }

      }

      }

      CryptHelper.java

      [java]

      package com.gdie.lab.crypt;

      import javax.crypto.Cipher;

      import javax.crypto.SecretKey;

      import javax.crypto.SecretKeyFactory;

      import javax.crypto.spec.DESKeySpec;

      import javax.crypto.spec.IvParameterSpec;

      import org.springframework.util.DigestUtils;

      public class CryptHelper{

      private static String CRYPT_KEY = "zhongqian";

      //加密

      private static Cipher ecip;

      //解密

      private static Cipher dcip;

      static {

      try {

      String KEY = DigestUtils.md5DigestAsHex(CRYPT_KEY.getBytes()).toUpperCase();

      KEY = KEY.substring(0, 8);

      byte[] bytes = KEY.getBytes();

      DESKeySpec ks = new DESKeySpec(bytes);

      SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");

      SecretKey sk = skf.generateSecret(ks);

      IvParameterSpec iv2 = new IvParameterSpec(bytes);

      ecip = Cipher.getInstance("DES/CBC/PKCS5Padding");

      ecip.init(Cipher.ENCRYPT_MODE, sk, iv2);

      dcip = Cipher.getInstance("DES/CBC/PKCS5Padding");

      dcip.init(Cipher.DECRYPT_MODE, sk, iv2);

      }catch(Exception ex) {

      ex.printStackTrace();

      }

      }

      public static String encrypt(String content) throws Exception {

      byte[] bytes = ecip.doFinal(content.getBytes("ascii"));

      return CryptUtils.byte2hex(bytes);

      }

      public static String decrypt(String content) throws Exception {

      byte[] bytes = CryptUtils.hex2byte(content);

      bytes = dcip.doFinal(bytes);

      return new String(bytes, "ascii");

      }

      //test

      public static void main(String[] args) throws Exception {

      String password = "gly";

      String en = encrypt(password);

      System.out.println(en);

      System.out.println(decrypt(en));

      }

      }

      package com.gdie.lab.crypt;

      import javax.crypto.Cipher;

      import javax.crypto.SecretKey;

      import javax.crypto.SecretKeyFactory;

      import javax.crypto.spec.DESKeySpec;

      import javax.crypto.spec.IvParameterSpec;

      import org.springframework.util.DigestUtils;

      public class CryptHelper{

      private static String CRYPT_KEY = "zhongqian";

      //加密

      private static Cipher ecip;

      //解密

      private static Cipher dcip;

      static {

      try {

      String KEY = DigestUtils.md5DigestAsHex(CRYPT_KEY.getBytes()).toUpperCase();

      KEY = KEY.substring(0, 8);

      byte[] bytes = KEY.getBytes();

      DESKeySpec ks = new DESKeySpec(bytes);

      SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");

      SecretKey sk = skf.generateSecret(ks);

      IvParameterSpec iv2 = new IvParameterSpec(bytes);

      ecip = Cipher.getInstance("DES/CBC/PKCS5Padding");

      ecip.init(Cipher.ENCRYPT_MODE, sk, iv2);

      dcip = Cipher.getInstance("DES/CBC/PKCS5Padding");

      dcip.init(Cipher.DECRYPT_MODE, sk, iv2);

      }catch(Exception ex) {

      ex.printStackTrace();

      }

      }

      public static String encrypt(String content) throws Exception {

      byte[] bytes = ecip.doFinal(content.getBytes("ascii"));

      return CryptUtils.byte2hex(bytes);

      }

      public static String decrypt(String content) throws Exception {

      byte[] bytes = CryptUtils.hex2byte(content);

      bytes = dcip.doFinal(bytes);

      return new String(bytes, "ascii");

      }

      //test

      public static void main(String[] args) throws Exception {

      String password = "gly";

      String en = encrypt(password);

      System.out.println(en);

      System.out.println(decrypt(en));

      }

      }

    【java證書的加密與解密代碼】相關(guān)文章:

    PHP url 加密解密函數(shù)代碼方法03-31

    java非對稱加密的源代碼(rsa)03-30

    如何讓JAVA代碼更高效03-20

    Java代碼的基本知識02-27

    Java中的動態(tài)代碼編程03-05

    在Java中執(zhí)行JavaScript代碼04-01

    關(guān)于Java源代碼折行的規(guī)則03-20

    如何給word文檔加密03-09

    過濾HTML代碼08-29

    主站蜘蛛池模板: 香蕉久久夜色精品国产小说| 高清在线国产午夜精品| 四虎国产精品免费观看| 亚洲精品午夜国产VA久久成人| 国产精品白丝jkav网站| 欧美日激情日韩精品| 亚洲国产精品狼友中文久久久 | 免费看污污的网站欧美国产精品不卡在线观看| 无码人妻精品一区二区三| 国产一级精品高清一级毛片| 国产亚洲婷婷香蕉久久精品| 免费人妻精品一区二区三区| 国产精品亚洲精品日韩已满| 免费精品视频在线| 91精品国产91热久久久久福利| 国产AV国片精品有毛| 亚洲精品无码激情AV| 久久www免费人成精品香蕉| 51久久夜色精品国产| 国产精品福利一区二区久久| 精品久久久久久无码专区 | 少妇精品久久久一区二区三区 | 久久这里只有精品久久| 精品国产三级a∨在线欧美| 亚洲精品无码激情AV| 日韩精品电影一区亚洲| 国产啪亚洲国产精品无码 | 97精品在线播放| 嫩草影院久久国产精品| 国产精品igao视频网| 久久精品人人做人人爽电影蜜月 | 无码国产精品一区二区免费16| 欧美精品福利在线视频 | 日产精品久久久久久久| 亚洲精品无码永久在线观看你懂的| 91精品成人免费国产片| 9久久9久久精品| 国产午夜福利精品一区二区三区 | 午夜精品一区二区三区免费视频 | 亚洲精品乱码久久久久久按摩| 亚洲精品国产自在久久|