新闻列表/

技术沙龙 | 基于 Spring AOP 实现信息的加解密和脱敏

溪塔科技溪塔科技2022-05-13
Img97001


AOP 加解密和脱敏

今天给大家分享基于 Spring AOP 实现某些重要信息的加解密和脱敏。


AOP 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能统一维护,今天主要讲讲应用于加解密脱敏方面。


日常业务开发中,经常会接触一些比较重要的用户信息,比如手机号,身份证号,邮箱等,如果直接明文保存到数据库里,万一数据库被黑,这些信息就面临着暴露的风险。用户可能遭受短信轰炸,身份证号可能被冒用,数据安全很重要,所以对重要信息有必要加密后保存,查询时解密返回,页面脱敏显示,比如手机号只展示前三后四,如:12345678910 置换为 123****8910。


之前看到有些项目返回时是手动调用工具类替换后再返回,如下这样:

Img97002


如果多个业务需要做加解密脱敏处理,每次新增都自己手动调用加密方法,每次查询都自己手动进行解密或者脱敏处理,就会多出很多重复代码,代码就显得很笨重。特别是后续万一修改了公共方法,就有可能要对应所有调用它的地方。


本次介绍的基于 Spring AOP 注解的方式,实现加解密脱敏,对 service 层的业务代码无侵入。


涉及的代码如下,DecryptField,DesensitizedField,EncryptField 三个注解用于标记需要处理的字段,NeedDecrypt,NeedDesensitized,NeedEncrypt 三个注解用于标记切入点,DecryptAspect,DesensitizedAspect,EncryptAspect 三个切面配置类,具体实现真正的加解密脱敏。

Img97003


Spring AOP 中有 5 种通知类型分别如下:

Img97004


这次介绍的主要就用到了 Before 和 AfterReturning,在请求过来时,新增方法调用前进行加密配置,在查询返回后进行解密脱敏。


接下来具体使用看看,首先看一下加密的切面类 EncryptAspect,切面里定义了切入点是指定的注解 @NeedEncrypt,在 before 方法里进行具体的加密处理,先找到被注解 @EncryptField 标记的字段,然后对该字段的值进行加密处理。里面具体的加密方式就可以自己自定义了,看自己需求。

Img97005


Img97006


我们只需要在方法添加【@NeedEncrypt】注解,在需要加密字段添加注解【@EncryptField】,调用接口,查看数据库,就可以看到对应的字段加密成功。

Img97007


Img97008


Img97009


Img97010


同样的,只需要在方法添加【@NeedDecrypt】注解,需要解密字段添加注解【@DecryptField】。调用接口,就可以看到对应的字段解密成功。

Img97011


Img97012


Img97013


Img97014


脱敏也是如此,在方法添加【@NeedDesensitized】注解,需要脱敏的字段添加注解【@DesensitizedField】,最后调用接口可以看到返回脱敏成功。

Img97015


Img97016


Img97017


由于都是一样的原理,这里不再对解密和脱敏的切面类做截图说明了,具体的规则可以根据需求自由发挥。


这样,我们就在不修改 service 层源代码的前提下,去为系统的重要用户信息添加了加解密脱敏通用功能,提高程序的可重用性,同时提高了开发的效率。


Img97018


往期回顾

01

全国首个供应链节点!“星火·链网”国家区块链基础设施骨干节点(胶州)正式上线

02

溪塔科技完成数千万元 A 轮融资,加速赋能数字经济

03

发挥创新优势,加快数字经济布局与发展 | 溪塔科技参与起草信通院《2020区块链创新与知识产权发展白皮书》正式发布

04

陆羽跨链协议白皮书发布,打造联盟链世界的通用语言

05

CITA 2.0 正式发布


杭州溪塔科技有限公司 | (Rivtower Techonology Co.,Ltd.)是以开源为内核领先的区块链底层技术公司。公司自主研发设计了包括开源联盟链底层 CITA 、云原生区块链开发框架 CITA-Cloud、企业级区块链管理平台 RivSpace 、 数据要素确权流转平台 RivTrust 等区块链底层产品生态,并在金融,政务,能源,工业互联网领域广泛应用,是国家级新型数字基础设施星火•链网核心合作伙伴,在共识算法、智能合约、隐私保护等领域申请 180 余项发明专利。


Img97019


扫码联系溪塔小助手
溪塔科技
Copyright © 2019-2023 Rivtower
杭州溪塔科技有限公司
Tel:19357216397
核心产品
RivSpace - 企业级WEB3基础设施管理平台
RivDAP - 数字化商品管理平台
MagiPock - Web3.0时代最具价值的文旅互动分享平台
联系我们
杭州总部
北京子公司
上海子公司
友情链接
星火链网
数文链
DIDA
企业公众号
企业公众号
市场部小助手
市场部小助手