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); 
 | 
    } 
 | 
} 
 |