package com.hh.common.encrypt;
import java.security.AlgorithmParameters;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AesUtils {
private static final String IV_INIT = "0102030405060708";
// 对称加密算法,java默认只支持128bytes。
/**
* 加密
* aes(src.getBytes,key)
* @param encryptStr
* @return
*/
public static byte[] encryptDefault(String src, String key) throws Exception {
// 返回实现指定算法的密码对象实例
Cipher cipher = Cipher.getInstance("AES");
// 根据key产生指定算法的秘钥
SecretKeySpec securekey = new SecretKeySpec(key.getBytes(),"AES");
//设置密钥和加密形式
cipher.init(Cipher.ENCRYPT_MODE, securekey);
// 依据init,执行具体操作
byte[] doFinal = cipher.doFinal(src.getBytes());
return doFinal;
}
/**
* 加密
* base64(aes(src,key))
* @param encryptStr
* @return
*/
public static String encryptBase64Default(String src, String key) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec securekey = new SecretKeySpec(key.getBytes(),"AES");
cipher.init(Cipher.ENCRYPT_MODE, securekey);//设置密钥和加密形式
byte[] doFinal = cipher.doFinal(src.getBytes());
String encode = Base64Util.encode(doFinal);
return encode;
}
/**
* 解密
* aes(src.getBytes,key)
* @param decryptStr
* @return
* @throws Exception
*/
public static byte[] decryptDefault(String src, String key) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec securekey = new SecretKeySpec(key.getBytes(), "AES");//设置加密Key
cipher.init(Cipher.DECRYPT_MODE, securekey);//设置密钥和解密形式