private static byte[] encryptByAES(String encryptStr) {
if (StringUtil.isNullOrEmpty(encryptStr)) {
throw new IllegalArgumentException();
}
byte[] encrypted = null;
try {
// (1)jiamikeyshengcheng
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keygen.init(random);
key = keygen.generateKey().getEncoded();
// (2)jiamizhunbei
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
byte[] ivArr = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
IvParameterSpec iv = new IvParameterSpec(ivArr);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
// (3)jiami
encrypted = cipher.doFinal(encryptStr.getBytes());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return encrypted;
}
private static byte[] decrypt(byte[] encrypByte) {
byte[] original = null;
try {
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] ivArr = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
IvParameterSpec iv = new IvParameterSpec(ivArr);
cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
original = cipher.doFinal(encrypByte);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return original;
}
public static void main(String[] args) throws Exception {
byte[] encrypByte = encryptByAES("message");
byte[] original = decrypt(encrypByte);
System.out.println(new String(original));//输出message
}