MyBatis Plus 如何对敏感字段加解密(使用哪种加密方式)?不同敏感字段需要使用不同的密钥,加密取出后给前端需要做脱敏,脱敏是在 Jackson 序列化到前端的时候做吗?
背景
在开发中,我们常常会遇到需要对敏感字段进行加解密的场景,比如用户的身份证号、银行卡号、手机号等。MyBatis Plus 作为常用的持久层框架,如何在其中实现对敏感字段的加解密,同时满足不同字段使用不同密钥的要求?此外,当数据需要发送到前端时,是否在 Jackson 序列化阶段进行脱敏处理?
具体问题
- 加密方式选择:MyBatis Plus 中适合使用哪种加密方式对敏感字段进行加密?是 AES、RSA 还是其他加密算法?
- 如果加密的数据需要查询或模糊查询怎么处理?
- 密钥管理:如何实现不同敏感字段使用不同的密钥?密钥的存储和管理有什么好的实践?
- 脱敏处理时机:数据从数据库取出后,是在 Jackson 序列化到前端时进行脱敏处理?
期待的解决方案
- 推荐一种适合 MyBatis Plus 的加密方式,并说明其优缺点。
- 提供一种实现不同字段使用不同密钥的方案。
- 如果脱敏可以在 Jackson 序列化阶段完成,希望给出具体的实现思路或代码示例。
补充说明
- 我们目前使用的是 MyBatis Plus 3.x 版本。
- 项目中已经集成了 Spring Boot 和 Jackson。
希望各位大神能够分享一下经验或者提供一些思路,非常感谢!
通过Jackson返回数据的时候去做数据处理,那只是供前端展示罢了,其实算不上真脱敏,如果你的业务只通过这个操作确实能实现你的需求,那你放心的用,实现简单,问题也不大
我们业务中的脱敏是直接在db层入库的是就是脱敏后的数据,实现这个功能的方案很多,mybatis插件或者aop都能实现;
搜索是个问题,因为是db存储的直接就是脱敏数据,所以对脱敏数据直接搜索是不现实的,比较简单的实现,抽取原始数据的关键字,你在表中额外添加一个字段存起来或者使用es这一类的工具提供送搜索服务