import javax.crypto.*;importjava.nio.charset.Charset;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;public classAESUtil {static final String ALGORITHM = "AES";static final Charset charset = Charset.forName("UTF-8");/*** 生成密钥
*
*@return密钥*/
public static SecretKey generateKey() throwsNoSuchAlgorithmException {
KeyGenerator keyGenerator=KeyGenerator.getInstance(ALGORITHM);
SecureRandom secureRandom= newSecureRandom();
keyGenerator.init(secureRandom);
SecretKey secretKey=keyGenerator.generateKey();returnsecretKey;
}/*** 加密
*
*@param待加密内容
*@param密钥
*@return加密后比特数组*/
public static byte[] encrypt(String content, SecretKey secretKey) throwsIllegalBlockSizeException, InvalidKeyException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException {returnaes(content.getBytes(charset), Cipher.ENCRYPT_MODE, secretKey);
}/*** 解密
*
*@param加密内容
*@param密钥
*@return解密后字符串*/
public static String decrypt(byte[] contentArray, SecretKey secretKey) throwsIllegalBlockSizeException, InvalidKeyException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException {byte[] result =aes(contentArray, Cipher.DECRYPT_MODE, secretKey);return newString(result, charset);
}private static byte[] aes(byte[] content, int mode, SecretKey secretKey) throwsNoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
Cipher cipher=Cipher.getInstance(ALGORITHM);
cipher.init(mode, secretKey);byte[] result =cipher.doFinal(content);returnresult;
}
}