通过反射给参数进行AES算法加密 这里是部分参数加密
最后效果
AES工具类
public class AESUtil { private static final String KEY_ALGORITHM = "AES"; private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算 /** * AES 加密操作 * * @param content * @param password * @return */ public static String encrypt(String content, String password) { try { Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器 byte[] result = cipher.doFinal(byteContent);// 加密 return Base64.getEncoder().encodeToString(result);//通过Base64转码返回 } catch (Exception ex) { Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex); } return null; } /** * AES 解密操作 * * @param content * @param password * @return */ public static String decrypt(String content, String password) { try { Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password)); //执行操作 byte[] result = cipher.doFinal(Base64.getDecoder().decode(content)); return new String(result, "utf-8"); } catch (Exception ex) { // log.error(ex.getMessage(),ex); } return null; } }
实体类
@TableName(value ="vip_card",autoResultMap = true) @Data public class VipCard implements Serializable { /** * id */ @TableId(type = IdType.AUTO) private Integer id; /** * 卡号 */ @TableField(typeHandler = AESHandler.class) private String cardNo; /** * 用户名 */ @TableField(typeHandler = AESHandler.class) private String name; /** * 性别 */ private Integer gender; /** * 年龄 */ private Integer age; /** * 邮箱 */ @TableField(typeHandler = AESHandler.class) private String email; /** * 身份证号 */ @TableField(typeHandler = AESHandler.class) private String idNumber; /** * 地址 */ @TableField(typeHandler = AESHandler.class) private String address; /** * 手机号 */ @TableField(typeHandler = AESHandler.class) private String phoneNumber; }
测试类
public class Test { public static void main(String[] args) { String password = "VtW************=="; VipCard vipCard = new VipCard(); vipCard.setCardNo("6212333702610888999"); vipCard.setName("刘鑫"); vipCard.setGender(1); vipCard.setAge(59); vipCard.setEmail("1234568789@163.com"); vipCard.setIdNumber("410102196666066665"); vipCard.setAddress("杭州市拱墅区祥云路123号"); vipCard.setPhoneNumber("13667779999"); VipCard vipCard2 = new VipCard(); //所有属性 遍历加密 Class<? extends VipCard> aClass = vipCard.getClass(); Field[] declaredFields = aClass.getDeclaredFields(); try { for (Field field : declaredFields) { field.setAccessible(true); if (Objects.nonNull(field.getAnnotation(TableField.class)) && Objects.nonNull(field.get(vipCard)) && !"id".equals(field.getName())) { Object value = field.get(vipCard); String name = field.getName(); System.out.println("name = " + name); System.out.println("传入数据===========" + value); String encrypt = AESUtil.encrypt(value.toString(), password); System.out.println("加密后数据=============== " + encrypt); field.set(vipCard2, encrypt); } else { try { System.out.println("--------------------------------------"); Object value = field.get(vipCard); String name = field.getName(); System.out.println("name = " + name); System.out.println("传入数据===========" + value); field.set(vipCard2, value); } catch (IllegalAccessException e) { System.out.println("非加密字段反射异常"); } } } } catch (IllegalAccessException e) { System.out.println("加密字段反射异常"); } System.out.println(">>>>>>>>>>>>>>>>>原来数据" + vipCard.toString()); System.out.println(">>>>>>>>>>>>>>>>>更新数据" + vipCard2.toString()); } }