YYC
2024-11-08 01a9e07288902ff84bf3007030be6a72e2150679
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.fzzy.api.utils;
 
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
 
/**
 * @Description 陕西省平台数据加密及解密
 * @Author CZT
 * @Date 2024/4/23 18:02
 */
public class SXAESUtils {
 
    public static final String AES_KEY = "shanxihlhtaeskey";
    private static final String AES_ALGORITHM = "AES/CBC/PKCS5Padding";
    private static final String AES_KEY_ALGORITHM = "AES";
 
 
    /**
     * 用AES加密, 加密算法为 AES/CBC/PKCS5Padding
     *
     * @param key
     * @param data
     * @return
     * @throws Exception
     */
    public static String encryptByAES(String key, String data) throws Exception {
        Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE,
                new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), AES_KEY_ALGORITHM),
                new IvParameterSpec(key.getBytes(StandardCharsets.UTF_8)));
        byte[] out = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(out);
    }
 
    /**
     * 用AES解密, 解密算法为 AES/CBC/PKCS5Padding
     *
     * @param key
     * @param dataBase64
     * @return
     * @throws Exception
     */
    public static String decryptByAES(String key, String dataBase64) throws Exception {
        Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8),
                AES_KEY_ALGORITHM), new
                IvParameterSpec(key.getBytes(StandardCharsets.UTF_8)));
        byte[] out =
                cipher.doFinal(Base64.getDecoder().decode(dataBase64));
        return new String(out, StandardCharsets.UTF_8);
    }
}