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