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