package io.dataease.utils; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import static java.nio.charset.StandardCharsets.UTF_8; public class AesUtils { public static String aesDecrypt(String src, String secretKey, String iv) { if (StringUtils.isBlank(secretKey)) { throw new RuntimeException("secretKey is empty"); } try { byte[] raw = secretKey.getBytes(UTF_8); SecretKeySpec secretKeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv1 = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv1); byte[] encrypted1 = Base64.decodeBase64(src); byte[] original = cipher.doFinal(encrypted1); return new String(original, UTF_8); } catch (BadPaddingException | IllegalBlockSizeException e) { // 解密的原字符串为非加密字符串,则直接返回原字符串 return src; } catch (Exception e) { throw new RuntimeException("decrypt error,please check parameters", e); } } }