package edu.nju.util; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.net.URLEncoder; import java.util.Base64; public class AESUtil { //偏移量 private static String IV ="mooctestmooctest"; //钥匙 private static String KEY = "TESTMOOCTESTMOOC"; //加密 public static String encrypt(String str) { try { byte[] bytes = str.getBytes(); IvParameterSpec ivParameterSpec = new IvParameterSpec(IV.getBytes()); SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); bytes = cipher.doFinal(bytes); bytes = Base64.getEncoder().encode(bytes); String res = new String(bytes); return URLEncoder.encode(res); } catch (Exception e) { e.printStackTrace(); return null; } } //解密 public static String decrypt(String str) { try { byte[] bytes = Base64.getDecoder().decode(str); IvParameterSpec ivParameterSpec = new IvParameterSpec(IV.getBytes()); SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec); bytes = cipher.doFinal(bytes); return new String(bytes); } catch (Exception e) { e.printStackTrace(); return null; } } }