| package com.doumee.core.utils; | 
|   | 
| import javax.crypto.Cipher; | 
| import javax.crypto.spec.SecretKeySpec; | 
| import java.nio.charset.StandardCharsets; | 
| import java.util.Base64; | 
|   | 
| public class AESUtils { | 
|   | 
|     private static final String ALGORITHM = "AES"; | 
|     private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding"; // 使用 ECB 模式并使用 PKCS5Padding 填充 | 
|   | 
|     public static String encrypt(String data, String key) throws Exception { | 
|         SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM); | 
|         Cipher cipher = Cipher.getInstance(TRANSFORMATION); | 
|         cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); | 
|         byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)); | 
|         return Base64.getEncoder().encodeToString(encryptedBytes); | 
|     } | 
|   | 
|     public static String decrypt(String encryptedData, String key) throws Exception { | 
|         SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM); | 
|         Cipher cipher = Cipher.getInstance(TRANSFORMATION); | 
|         cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); | 
|         byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedData)); | 
|         return new String(decryptedBytes, StandardCharsets.UTF_8); | 
|     } | 
|   | 
|     public static void main(String[] args) throws Exception { | 
|         String key = "qtixtsujiokdgrqq"; // 16 字节的密钥 | 
|         String decryptedData = decrypt("/V65QRvmgommnLLJQV+JwE7L2FShGboL3TojZL4Up2JzeR/NK7rxwFqVHU4f9BTT2PYgDX5ULBGjbWnrwNpfhB1j1aUWSuItXvAAutz5L7f+bnZGmNNsUzG0KRyDu77e1fkweqfuSqZ7C4dmt6vy+DdYAMSC/RVBx/dOCU4gNcf0SupvH57WHPTt3KpB3OmbXBg74DiAi2JG7+giWDLnDrDBahhTgMSu0u1f3K5SMcE9tVVZCHGkzNAV5owwo/7yyvFMdBELqO/pgtfI1syaHgPdskMXUwa1j6HdLUcAqvaF7PzJOv++VGNqnCm2n2UBoIPEvKkn9TuI3LHHT26v2H0KoRmJdPIhme0eGqyXqAkTYFbAd/6OGUiwJO1vZYZDW/fmtKNThP0UOFLvJ6jVW5XrvIdmjzoF8iOxyyj+N3/3Mp4SinH9gSBuz/TbabH4zXL0Np1UvRmJjtkIEa+q8DEch0HcyH2ABULnu/xyxbIXhLQ1lgBZ2GJ8lO3ynvSSwkbzbd1vP5zWxKIYRDTf5qRk3eDwzXNbmcY6DFPYepS3ceh0kl4iScqG+AO/bvxTqnmm6/nrYVI8qHq7GCWthiTYX0AzulhT7ceyEfMMD4zuz8gbWTfqQtIcDGHeN7gZuFUcwRfHG9sEN7Vkle6QSDZumjODSbrYiTTruQXCSSiDVoXFDK24GvKaNMKB2lh8qcV1sldpyAlgeOKCbYWyBiEG/5ZNZH0iHtrIXn/ebrs6kzMSFREw+CVvgrkpZZ04MP5QGMFEMr3+Zg4KtwYraSoWGg8Pn1MgN/dBCHOKnpCOMW2I8n+sKKZMJh5YkhrEtknf7Zvi8lpZX5Sjz5DOA3vaxy8E0YPbrjRxqlgW8psy5R6ZwDP9jfGIOG0gS0gPewm8xJRYYLEk7vbhwBW2hQ==", key); | 
|   | 
|         System.out.println("" + decryptedData); | 
|     } | 
| } |