package com.dp;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;
public class AESTest {
public static void main(String[] args) throws Exception{
//要加密的字符串
String content = "hello world";
//key
String key = "123456";
//加密
byte [] cipherBytes = encrypt(content.getBytes(),key.getBytes());
System.out.println("加密后:"+new String(cipherBytes));
//解密
byte [] plainBytes = decrypt(cipherBytes,key.getBytes());
System.out.println("解密后:"+new String(plainBytes));
}
//解密算法
private static byte[] decrypt(byte[] cipherBytes, byte[] key) throws Exception{
//生成秘钥对象
SecretKey secretKey = generateKey(key);
//获取AES加密器
Cipher cipher = Cipher.getInstance("AES");
//初始化加密器
cipher.init(Cipher.DECRYPT_MODE,secretKey);
//解密
return cipher.doFinal(cipherBytes);
}
//加密算法
private static byte[] encrypt(byte[] plainBytes, byte[] key) throws Exception{
//生成秘钥对象
SecretKey secretKey = generateKey(key);
//获取AES加密器
Cipher cipher = Cipher.getInstance("AES");
//初始化加密器
cipher.init(Cipher.ENCRYPT_MODE,secretKey);
//加密数据,返回秘闻
return cipher.doFinal(plainBytes);
}
//生成秘钥对象
private static SecretKey generateKey(byte[] key) throws Exception{
//根据指定的rng算法创建随机数生成器,注意是数字1
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
//秘钥key 作为随机数的种子
random.setSeed(key);
//创建AES算法生成器
KeyGenerator gen = KeyGenerator.getInstance("AES");
//初始化算法生成器,生成一个128位的随机源--128、192、256
gen.init(64,random);
//生成秘钥对象
return gen.generateKey();
}
}
AES对称加密算法
最新推荐文章于 2022-09-05 15:48:04 发布