工具类
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
import lombok.extern.slf4j.Slf4j;
/**
* AES加解密
*
*/
@Slf4j
public class AESUtils {
public static final String CHAOSUKEY = "lijiong011652123";
/**
* AES加密+Base64转码
*
* @param data 明文(16进制)
* @param key 密钥
* @return
*/
public static String encrypt(String data, String key) {
byte[] keyb = null;
try {
keyb = key.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} // 明文
SecretKeySpec sKeySpec = new SecretKeySpec(keyb, "AES");
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES");
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
}
try {
cipher.init(Cipher.ENCRYPT_MODE, sKeySpec);
} catch (InvalidKeyException e) {
e.printStackTrace();
}
byte[] bjiamihou = null;
String miwen = "";
try {
bjiamihou = cipher.doFinal(data.getBytes("utf-8"));
// byte加密后
miwen = Base64.encodeBase64String(bjiamihou);// 密文用base64加密
} catch (IllegalBlockSizeException | BadPaddingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return miwen;
}
/**
* Base64解码 + AES解码
*
* @param data 密文 (16进制)
* @param key 密钥
* @return
*/
public static String decrypt(String data, String key){
byte[] keyb = null;
try {
keyb = key.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
byte[] miwen = Base64.decodeBase64(data);
SecretKeySpec sKeySpec = new SecretKeySpec(keyb, "AES");
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES");
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
}
try {
cipher.init(Cipher.DECRYPT_MODE, sKeySpec);
} catch (InvalidKeyException e) {
e.printStackTrace();
}
byte[] bjiemihou = null;
String mingwen = "";
try {
bjiemihou = cipher.doFinal(miwen);
// byte加密后
mingwen = new String(bjiemihou,"utf-8");
} catch (IllegalBlockSizeException | BadPaddingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return mingwen;
}
public static void main(String[] args) throws Exception {
// 测试加密工具类
String key = "lijiong011652123";//自定义16位字符串即可
String data = "d[i>>1] |= Character.digit((char) b[offset+i], 32) << shift";//明文
String miwen = encrypt(data,key);// 加密
decrypt(miwen,key);// 解密
}
}
运行结果
密文:8dYwAHy5bXpC1ueJa6aj2C2NHNeYI2vBBZ/JMrKQ7fYMBtYSAzxIemc5nMNA52HQcG/siXThs/2FxqMKGGidvQ==
明文:d[i>>1] |= Character.digit((char) b[offset+i], 32) << shift