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