public class AESUtils { public static final String algorithm = "AES"; // AES/GCM/NoPadding: 默认, 自动填充 public static final String transformation = "AES/GCM/NoPadding"; // 随机定义16位 public static final String key = "4447909345675431"; private static final int TAG_LENGTH_BIT = 120; /*** * 加密 * @param original 需要加密的参数 * @return * @throws Exception */ public static String encryptByAES(String original) throws Exception { // 获取Cipher Cipher cipher = Cipher.getInstance(transformation); // 生成密钥 SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), algorithm); // 指定模式(加密)和密钥 // 创建初始化向量 GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH_BIT, key.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, keySpec, spec); // 加密 byte[] bytes = cipher.doFinal(original.getBytes()); return Base64Utils.encryptBASE64(bytes); } /** * 解密 * * @param encrypted 需要解密的参数 * @return * @throws Exception */ public static String decryptByAES(String encrypted) throws Exception { // 获取Cipher Cipher cipher = Cipher.getInstance(transformation); // 生成密钥 SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), algorithm); // 指定模式(解密)和密钥 // 创建初始化向量 GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH_BIT, key.getBytes()); cipher.init(Cipher.DECRYPT_MODE, keySpec, spec); // 解密 byte[] bytes = cipher.doFinal(Base64Utils.decryBASE64(encrypted)); return new String(bytes); } public static void main(String[] args) throws Exception { String s= "dsadsadsada"; String aes = encryptByAES(s); System.out.println(aes); String a = decryptByAES(aes); System.out.println(a); } }
AES AES/GCM/NoPadding 加密解密
最新推荐文章于 2024-06-21 17:06:31 发布