| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package cn.licoy.encryptbody.util;
- import javax.crypto.*;
- import javax.crypto.spec.SecretKeySpec;
- import java.io.UnsupportedEncodingException;
- import java.security.InvalidKeyException;
- import java.security.NoSuchAlgorithmException;
- import java.security.SecureRandom;
- /**
- * <p>AES加密处理工具类</p>
- *
- * @author licoy.cn
- * @version 2018/9/5
- */
- public class AESEncryptUtil {
- /**
- * AES加密
- *
- * @param content 字符串内容
- * @param password 密钥
- */
- public static String encrypt(String content, String password) throws Exception {
- return aes(content, password, Cipher.ENCRYPT_MODE);
- }
- /**
- * AES解密
- *
- * @param content 字符串内容
- * @param password 密钥
- */
- public static String decrypt(String content, String password) throws Exception {
- return aes(content, password, Cipher.DECRYPT_MODE);
- }
- /**
- * AES加密/解密 公共方法
- *
- * @param content 字符串
- * @param password 密钥
- * @param type 加密:{@link Cipher#ENCRYPT_MODE},解密:{@link Cipher#DECRYPT_MODE}
- */
- private static String aes(String content, String password, int type) throws Exception {
- KeyGenerator generator = KeyGenerator.getInstance("AES");
- SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
- random.setSeed(password.getBytes());
- generator.init(128, random);
- SecretKey secretKey = generator.generateKey();
- byte[] enCodeFormat = secretKey.getEncoded();
- SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(type, key);
- if (type == Cipher.ENCRYPT_MODE) {
- byte[] byteContent = content.getBytes("utf-8");
- return Hex2Util.parseByte2HexStr(cipher.doFinal(byteContent));
- } else {
- byte[] byteContent = Hex2Util.parseHexStr2Byte(content);
- return new String(cipher.doFinal(byteContent));
- }
- }
- }
|