package com.ysd.rsst.util;
import javax.crypto.*;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
public class Ases {
// 生成密钥
static final String ALGORITHM="AES";
public static SecretKey generateKey() {
KeyGenerator secretGenerator= null;
try {
secretGenerator = KeyGenerator.getInstance(ALGORITHM);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
SecureRandom secureRandom =new SecureRandom();
secretGenerator.init(secureRandom);
SecretKey secretKey =secretGenerator.generateKey();
return secretKey;
}
//加密
static Charset charset=Charset.forName("UTF-8");
public static byte[] eneript(String content, SecretKey secretKey) {
return aes(content.getBytes(charset),Cipher.ENCRYPT_MODE,secretKey);
}
//加密解密
public static byte[] aes(byte[] contentArray,int mode, SecretKey secretKey){
Cipher cipher= null;
try {
cipher = Cipher.getInstance(ALGORITHM);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
}
try {
cipher.init(mode,secretKey);
} catch (InvalidKeyException e) {
e.printStackTrace();
}
byte[] result= new byte[0];
try {
result = cipher.doFinal(contentArray);
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return result;
}
//解密
public static String decript(byte[] contentArray, SecretKey secretKey) {
byte[] aa=aes(contentArray,Cipher.DECRYPT_MODE,secretKey);
String aas="";
try {
aas= new String(aa,"UTF-8") ;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return aas ;
}
//查看
public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException {
String content ="123yy";
SecretKey secretKey =generateKey();
System.out.println("生成密钥"+secretKey );
byte[] encryptReSult=eneript(content,secretKey);
System.out.println("加密"+new String(encryptReSult));
String ss=decript(encryptReSult,secretKey);
System.out.println("解密"+ss);
}
}