package com.xx.ws.util;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
public class AESOperator {
private String sKey = "abcdef0123456789";
private String ivParameter = "9iuj87y2hbi5wxlk";
private final String CIPHER = "AES/CBC/PKCS5Padding";
private final String AES = "AES";
private final String CHARSET = "UTF-8";
public AESOperator() {
}
public AESOperator(String key) {
this.sKey = key;
}
public String encrypt(String sSrc) throws Exception {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] raw = this.sKey.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
IvParameterSpec iv = new IvParameterSpec(this.ivParameter.getBytes());
cipher.init(1, skeySpec, iv);
byte[] encrypted = cipher.doFinal(sSrc.getBytes("UTF-8"));
return DatatypeConverter.printBase64Binary(encrypted);
} catch (Exception var7) {
throw var7;
}
}
public String encrypt(String sSrc, String key) throws Exception {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] raw = key.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
IvParameterSpec iv = new IvParameterSpec(this.ivParameter.getBytes());
cipher.init(1, skeySpec, iv);
byte[] encrypted = cipher.doFinal(sSrc.getBytes("UTF-8"));
return DatatypeConverter.printBase64Binary(encrypted);
} catch (Exception var8) {
throw var8;
}
}
public String decrypt(String sSrc) throws Exception {
try {
byte[] raw = this.sKey.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(this.ivParameter.getBytes());
cipher.init(2, skeySpec, iv);
byte[] encrypted1 = DatatypeConverter.parseBase64Binary(sSrc);
byte[] original = cipher.doFinal(encrypted1);
return new String(original, "UTF-8");
} catch (Exception var8) {
throw var8;
}
}
public String decrypt(String sSrc, String key) throws Exception {
try {
byte[] raw = key.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(this.ivParameter.getBytes());
cipher.init(2, skeySpec, iv);
byte[] encrypted1 = DatatypeConverter.parseBase64Binary(sSrc);
byte[] original = cipher.doFinal(encrypted1);
return new String(original, "UTF-8");
} catch (Exception var9) {
throw var9;
}
}
public static void main(String[] args) throws Exception {
AESOperator aesOper = new AESOperator("abcdef0123456789");
String cSrc = "test123";
System.out.println(cSrc + " 长度为" + cSrc.length());
long lStart = System.currentTimeMillis();
String enString = aesOper.encrypt(cSrc);
System.out.println("加密后的字串是:" + enString + "长度为" + enString.length());
long lUseTime = System.currentTimeMillis() - lStart;
System.out.println("加密耗时:" + lUseTime + "毫秒");
lStart = System.currentTimeMillis();
String DeString = aesOper.decrypt(enString);
System.out.println("解密后的字串是:" + DeString + " 长度为" + DeString.length());
lUseTime = System.currentTimeMillis() - lStart;
System.out.println("解密耗时:" + lUseTime + "毫秒");
}
}
来源:https://www.cnblogs.com/white-knight/p/8568481.html