当前位置: 首页 > news >正文

dogonthemoon

恿粤晒话大致的实现流程

业务层-->系统拦截器-->数据库-->系统拦截器-->返回结果

加密注解设计

把需要加密的字段通过我们自定义的加密注解进行标识,所以我们需要先自定义一段加密注解的代码

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface Encrypt {

}

实体类

在实体类上使用注解标记需要加密字段

@Data

public class User {

private Long id;

private String username;

@Encrypt

private String password;

@Encrypt

private String email;

@Encrypt

private String phone;

}

加密工具类

基于AES加密算法实现对字段名的加密,大家可以选择其他的加密算法

public class EncryptionUtil {

privatestaticfinal String ALGORITHM = "AES";

privatestaticfinal String TRANSFORMATION = "AES/ECB/PKCS5Padding";

// AES加密

public static String encrypt(String plainText, String key) {

try {

SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), ALGORITHM);

Cipher cipher = Cipher.getInstance(TRANSFORMATION);

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));

return Base64.getEncoder().encodeToString(encryptedBytes);

} catch (Exception e) {

thrownew RuntimeException("加密失败", e);

}

}

// AES解密

public static String decrypt(String cipherText, String key) {

try {

SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), ALGORITHM);

Cipher cipher = Cipher.getInstance(TRANSFORMATION);

cipher.init(Cipher.DECRYPT_MODE, secretKey);

byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(cipherText));

returnnew String(decryptedBytes, StandardCharsets.UTF_8);

} catch (Exception e) {

thrownew RuntimeException("解密失败", e);

}

}

}

系统拦截器设计

通过拦截实现自动加密和自动解密

// 加密拦截器

@Intercepts({

@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})

})

@Component

public class FieldEncryptionInterceptor implements Interceptor {

@Value("${encryption.key:mySecretKey12345}")

private String encryptionKey;

@Override

public Object intercept(Invocation invocation) throws Throwable {

Object[] args = invocation.getArgs();

MappedStatement mappedStatement = (MappedStatement) args[0];

Object parameter = args[1];

// 获取SQL命令类型

String sqlCommandType = mappedStatement.getSqlCommandType().toString();

// 对INSERT和UPDATE操作进行加密处理

if ("INSERT".equals(sqlCommandType) || "UPDATE".equals(sqlCommandType)) {

encryptFields(parameter);

}

return invocation.proceed();

}

// 解密拦截器

@Intercepts({

@Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class})

})

@Component

public class FieldDecryptionInterceptor implements Interceptor {

@Value("${encryption.key:mySecretKey12345}")

private String encryptionKey;

@Override

public Object intercept(Invocation invocation) throws Throwable {

// 执行原始方法

Object result = invocation.proceed();

// 对查询结果进行解密处理

if (result instanceof List) {

List list = (List) result;

for (Object item : list) {

decryptFields(item);

}

} else {

decryptFields(result);

}

return result;

}

}

}

测试场景

用户信息保护:在用户注册时,自动加密用户的密码、邮箱、手机号等敏感信息,即使数据库泄露也不会造成用户隐私泄露

金融数据保护:对用户的银行卡号、交易记录等金融数据进行加密存储,满足金融行业的合规要求

医疗医保数据保护:对患者的病历、诊断结果等医疗隐私数据进行加密,保护患者隐私

企业数据保护:对企业内部的商业机密、客户资料等重要数据进行加密保护

http://www.jsqmd.com/news/466335/

相关文章:

  • AI 改造采购管理模块:四川本土数智化方案的技术实践与价值解
  • 打造高效易用的Agent Skill
  • AI「三阶段概率筛选流程」逆向适配结构
  • AI 改造 CRM 模块:四川本土数智化方案的技术创新与实践
  • 2026年评价高的水泥涵管品牌推荐:市政排水管水泥涵管优质供应商推荐 - 行业平台推荐
  • LVS TUN 模式
  • AI颠覆软件业,3000亿市值蒸发(附《华尔街日报》原文)
  • 探讨石材水景加工厂哪家更值得选,万磊石业好用不,费用多少? - 工业品牌热点
  • Sivers 的客户开始大规模量产 LiDAR 订单
  • 2026年正规的煤炭展会搭建公司推荐:教育展会搭建厂家选择指南 - 行业平台推荐
  • IO多路复用——select、poll与epoll
  • 自然语言录入销售合同:四川江油本土数智化的采购销售提效实
  • 2026年分析口碑好的水泥搅拌机,常州北奇机械优势凸显 - 工业推荐榜
  • 国内热处理设备生产厂家排名
  • CLI-Anything:一条命令把任意软件变成 AI Agent 原生工具,到底怎么做到的?
  • 彻底删除ANSYS许可管理器
  • 2026年 擦拭布厂家推荐排行榜,珠宝擦银布、无尘擦拭布、超细纤维擦拭布等精密清洁用品源头实力解析 - 品牌企业推荐师(官方)
  • 2026宁波市政道路划线优质服务推荐榜:路面划线/停车位划线/厂区划线/厂区道路划线/地面划线/市政道路划线/热熔标线/选择指南 - 优质品牌商家
  • 训练正常,测试异常,什么鬼?(cudnn)
  • 智宅摸鱼GEO方案解析:认知层,让AI读懂品牌的第一步
  • Agent中篇 | 揭秘agent智能体如何思考、决策,并自主执行任务
  • 球笼优质定制厂家哪个品牌好用,快来了解 - myqiye
  • 2026年口碑好的气膜滑冰馆公司推荐:气膜运动馆厂家实力哪家强 - 行业平台推荐
  • OpenClaw的配置文件配置
  • Deepseek为人服务,使人进步
  • 闲置永辉购物卡回收技巧,轻松兑现! - 团团收购物卡回收
  • 并查集(非连通性问题)——# P2391 白雪皑皑
  • 购物卡变现攻略:永辉超市卡轻松回收! - 团团收购物卡回收
  • JavaFX 自动化测试工具现状与挑战:从技术栈到事件机制问题的系统总结
  • 平台要AI,但不允许AI批量生产内容