jiangping
2025-04-22 55b98737d5c4240b8035914a15e6975a9a71b447
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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);
    }
}