|
import java.security.SecureRandom;
|
import java.util.Base64;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
|
import javax.crypto.Cipher;
|
import javax.crypto.KeyGenerator;
|
import javax.crypto.spec.SecretKeySpec;
|
|
public class test
|
{
|
private static final String KEY_ALGORITHM = "AES";
|
private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法
|
|
/**
|
* AES 加密操作
|
*
|
* @param content 待加密内容
|
* @param key 加密密钥
|
* @return 返回Base64转码后的加密数据
|
*/
|
public static String encrypt(String content, String key) {
|
try {
|
Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器
|
|
byte[] byteContent = content.getBytes("utf-8");
|
|
cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));// 初始化为加密模式的密码器
|
|
byte[] result = cipher.doFinal(byteContent);// 加密
|
|
return Base64.getEncoder().encodeToString(result);//通过Base64转码返回
|
|
} catch (Exception ex) {
|
|
}
|
|
return null;
|
}
|
|
/**
|
* AES 解密操作
|
*
|
* @param content
|
* @param key
|
* @return
|
*/
|
public static String decrypt(String content, String key) {
|
|
try {
|
//实例化
|
Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);
|
|
//使用密钥初始化,设置为解密模式
|
cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key));
|
|
//执行操作
|
byte[] result = cipher.doFinal(Base64.getDecoder().decode(content));
|
|
|
return new String(result, "utf-8");
|
} catch (Exception ex) {
|
|
}
|
|
return null;
|
}
|
|
/**
|
* 生成加密秘钥
|
*
|
* @return
|
*/
|
private static SecretKeySpec getSecretKey(final String key) {
|
//返回生成指定算法密钥生成器的 KeyGenerator 对象
|
try {
|
KeyGenerator _generator = KeyGenerator.getInstance("AES");
|
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
|
secureRandom.setSeed(key.getBytes());
|
_generator.init(128, secureRandom);
|
return new SecretKeySpec(_generator.generateKey().getEncoded(), KEY_ALGORITHM);
|
} catch (Exception e) {
|
throw new RuntimeException(" 初始化密钥出现异常 ");
|
}
|
}
|
|
public static void main (String[] args) throws java.lang.Exception
|
{
|
|
}
|
|
}
|