admin
2021-02-06 d1f26741bddf6f512d62c0100d42c52be8d37e76
utils/src/main/java/org/yeshi/utils/encrypt/AESUtil.java
@@ -1,156 +1,156 @@
package org.yeshi.utils.encrypt;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
 * AES加解密
 *
 * @author Administrator
 *
 */
public class AESUtil {
   /**
    * 128位AES加密
    *
    * @param content
    *            明文内容
    * @param KEY
    *            密匙,长度为16位
    * @return
    */
   @SuppressWarnings("restriction")
   public static String encrypt(String content, String KEY) {
      try {
         KeyGenerator kgen = KeyGenerator.getInstance("AES");
         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
         secureRandom.setSeed(KEY.getBytes());
         kgen.init(128, secureRandom);
         SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES");
         Cipher cipher = Cipher.getInstance("AES");
         byte[] byteContent = content.getBytes("utf-8");
         cipher.init(Cipher.ENCRYPT_MODE, key);
         byte[] result = cipher.doFinal(byteContent);
         return (new sun.misc.BASE64Encoder()).encode(result).replace("\n", "").replace("\r", "");
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (NoSuchPaddingException e) {
         e.printStackTrace();
      } catch (InvalidKeyException e) {
         e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
         e.printStackTrace();
      } catch (BadPaddingException e) {
         e.printStackTrace();
      }
      return new String();
   }
   /**
    * 128位AES解密
    *
    * @param contentStr
    *            密文内容
    * @param KEY
    *            密匙,长度为16位
    * @return
    */
   @SuppressWarnings("restriction")
   public static String decrypt(String contentStr, String KEY) {
      try {
         byte[] content = (new sun.misc.BASE64Decoder()).decodeBuffer(contentStr);
         KeyGenerator kgen = KeyGenerator.getInstance("AES");
         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
         secureRandom.setSeed(KEY.getBytes());
         kgen.init(128, secureRandom);
         SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES");
         Cipher cipher = Cipher.getInstance("AES");
         cipher.init(Cipher.DECRYPT_MODE, key);
         byte[] result = cipher.doFinal(content);
         return new String(result);
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (NoSuchPaddingException e) {
         e.printStackTrace();
      } catch (InvalidKeyException e) {
         e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
         e.printStackTrace();
      } catch (BadPaddingException e) {
         e.printStackTrace();
      } catch (Exception e) {
         e.printStackTrace();
      }
      return new String();
   }
   public static String decrypt(String contentStr, String keyBase64, String ivBase64) {
      try {
         byte[] content = (new sun.misc.BASE64Decoder()).decodeBuffer(contentStr);
         IvParameterSpec iv = new IvParameterSpec((new sun.misc.BASE64Decoder()).decodeBuffer(ivBase64));
         SecretKeySpec skeySpec = new SecretKeySpec((new sun.misc.BASE64Decoder()).decodeBuffer(keyBase64), "AES");
         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7PADDING");
         cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
         byte[] original = cipher.doFinal(content);
         return new String(original);
      } catch (Exception ex) {
         ex.printStackTrace();
      }
      return null;
   }
   /**
    * 128位AES解密
    *
    * @param contentStr
    *            -密文内容
    * @param k
    *            -密匙内容 16位
    * @return
    */
   public static String decrypt(byte[] contentStr, String k) {
      try {
         byte[] content = contentStr;
         KeyGenerator kgen = KeyGenerator.getInstance("AES");
         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
         secureRandom.setSeed(k.getBytes());
         kgen.init(128, secureRandom);
         SecretKeySpec key = new SecretKeySpec(k.getBytes(), "AES");
         Cipher cipher = Cipher.getInstance("AES");
         cipher.init(Cipher.DECRYPT_MODE, key);
         byte[] result = cipher.doFinal(content);
         return new String(result, "utf-8");
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (NoSuchPaddingException e) {
         e.printStackTrace();
      } catch (InvalidKeyException e) {
         e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
         e.printStackTrace();
      } catch (BadPaddingException e) {
         e.printStackTrace();
      } catch (Exception e) {
         e.printStackTrace();
      }
      return new String();
   }
}
package org.yeshi.utils.encrypt;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
 * AES加解密
 *
 * @author Administrator
 *
 */
public class AESUtil {
   /**
    * 128位AES加密
    *
    * @param content
    *            明文内容
    * @param KEY
    *            密匙,长度为16位
    * @return
    */
   @SuppressWarnings("restriction")
   public static String encrypt(String content, String KEY) {
      try {
         KeyGenerator kgen = KeyGenerator.getInstance("AES");
         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
         secureRandom.setSeed(KEY.getBytes());
         kgen.init(128, secureRandom);
         SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES");
         Cipher cipher = Cipher.getInstance("AES");
         byte[] byteContent = content.getBytes("utf-8");
         cipher.init(Cipher.ENCRYPT_MODE, key);
         byte[] result = cipher.doFinal(byteContent);
         return (new sun.misc.BASE64Encoder()).encode(result).replace("\n", "").replace("\r", "");
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (NoSuchPaddingException e) {
         e.printStackTrace();
      } catch (InvalidKeyException e) {
         e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
         e.printStackTrace();
      } catch (BadPaddingException e) {
         e.printStackTrace();
      }
      return new String();
   }
   /**
    * 128位AES解密
    *
    * @param contentStr
    *            密文内容
    * @param KEY
    *            密匙,长度为16位
    * @return
    */
   @SuppressWarnings("restriction")
   public static String decrypt(String contentStr, String KEY) {
      try {
         byte[] content = (new sun.misc.BASE64Decoder()).decodeBuffer(contentStr);
         KeyGenerator kgen = KeyGenerator.getInstance("AES");
         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
         secureRandom.setSeed(KEY.getBytes());
         kgen.init(128, secureRandom);
         SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES");
         Cipher cipher = Cipher.getInstance("AES");
         cipher.init(Cipher.DECRYPT_MODE, key);
         byte[] result = cipher.doFinal(content);
         return new String(result);
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (NoSuchPaddingException e) {
         e.printStackTrace();
      } catch (InvalidKeyException e) {
         e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
         e.printStackTrace();
      } catch (BadPaddingException e) {
         e.printStackTrace();
      } catch (Exception e) {
         e.printStackTrace();
      }
      return new String();
   }
   public static String decrypt(String contentStr, String keyBase64, String ivBase64) {
      try {
         byte[] content = (new sun.misc.BASE64Decoder()).decodeBuffer(contentStr);
         IvParameterSpec iv = new IvParameterSpec((new sun.misc.BASE64Decoder()).decodeBuffer(ivBase64));
         SecretKeySpec skeySpec = new SecretKeySpec((new sun.misc.BASE64Decoder()).decodeBuffer(keyBase64), "AES");
         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7PADDING");
         cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
         byte[] original = cipher.doFinal(content);
         return new String(original);
      } catch (Exception ex) {
         ex.printStackTrace();
      }
      return null;
   }
   /**
    * 128位AES解密
    *
    * @param contentStr
    *            -密文内容
    * @param k
    *            -密匙内容 16位
    * @return
    */
   public static String decrypt(byte[] contentStr, String k) {
      try {
         byte[] content = contentStr;
         KeyGenerator kgen = KeyGenerator.getInstance("AES");
         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
         secureRandom.setSeed(k.getBytes());
         kgen.init(128, secureRandom);
         SecretKeySpec key = new SecretKeySpec(k.getBytes(), "AES");
         Cipher cipher = Cipher.getInstance("AES");
         cipher.init(Cipher.DECRYPT_MODE, key);
         byte[] result = cipher.doFinal(content);
         return new String(result, "utf-8");
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (NoSuchPaddingException e) {
         e.printStackTrace();
      } catch (InvalidKeyException e) {
         e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
         e.printStackTrace();
      } catch (BadPaddingException e) {
         e.printStackTrace();
      } catch (Exception e) {
         e.printStackTrace();
      }
      return new String();
   }
}