package com.engine.salary.encrypt; import com.engine.salary.sys.constant.SalarySysConstant; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.enums.OpenEnum; import org.apache.commons.lang3.StringUtils; import weaver.general.AES; import weaver.general.BaseBean; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 此AES加密工具类仅用于关联应用设置中是否开启加密的应用使用 * 如另有需要,请重写工具类 */ public class AESEncryptUtil { static BaseBean bb = new BaseBean(); static String aesEncryptScrect = bb.getPropValue("hrmSalary", "AESEncryptScrect"); /** * AES加密 * * @param source 原始数据 * @return 加密数据 */ public static String encrypt(String source) { //防止初始化老数据时二次加密 if (StringUtils.isNotBlank(source) && !source.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { return SalarySysConstant.PRE_SIGN_ENCRYPT + AES.encrypt(source, aesEncryptScrect); } return source; } /** * AES解密 * * @param encryptStr 加密字符串 * @return 解密字符串 */ public static String decrypt(String encryptStr) { if (StringUtils.isNotBlank(encryptStr)) { if (encryptStr.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { encryptStr = encryptStr.substring(4, encryptStr.length()); return AES.decrypt(encryptStr, aesEncryptScrect); } else if (isNumeric(encryptStr) || checkHaveChinese(encryptStr) || encryptStr.startsWith("{") || encryptStr.contains("-") || encryptStr.contains(".") || "null".equals(encryptStr) || StringUtils.isBlank(encryptStr)) { return encryptStr; } else { return AES.decrypt(encryptStr, aesEncryptScrect); } } return encryptStr; } /** * 用于关闭加密设置后AES解密 * * @param encryptStr 加密字符串 * @return 解密字符串 */ public static String closeEncryptSetting(String encryptStr, SalarySysConfPO sysConfPo) { if (encryptStr == null) { return null; } else { //AES_前缀的密文 if (encryptStr.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { encryptStr = encryptStr.substring(4, encryptStr.length()); return AES.decrypt(encryptStr, aesEncryptScrect); } else if (isNumeric(encryptStr) || checkHaveChinese(encryptStr) || encryptStr.startsWith("{") || encryptStr.contains("-") || encryptStr.contains(".") || "null".equals(encryptStr) || StringUtils.isBlank(encryptStr)) { return encryptStr; } else if (sysConfPo == null || sysConfPo.getConfValue().equals(OpenEnum.OFF.getValue())) { return AES.decrypt(encryptStr, aesEncryptScrect); } else { return encryptStr; } } } /** * 判断字符串是否为整数或者小数或者负数 */ public static boolean isNumeric(String str) { Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$"); Matcher isNum = pattern.matcher(str); if (!isNum.matches()) { return false; } return true; } /** * 判断字符串是否包含中文字符 */ public static boolean checkHaveChinese(String countname) { Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); Matcher m = p.matcher(countname); if (m.find()) { return true; } return false; } }