久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

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