自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏

news/2024/11/9 2:40:28/

首先说到脱敏问题,我相信在座的很多人都需要处理这样的场景,比如前端页面显示的身份证号、地址等敏感信息都需要脱敏处理,而hutool就有这样的一个工具来辅助我们完成对某些字段属性信息的脱敏,hutool没有现成的实现方式,只是借助这个工具帮助我们来具体实现

前言

我们在使用手机银行的时候经常能看到APP上会将银行卡的卡号中间部分给隐藏掉使用 ***** 来代替,在某些网站上查看一些业务密码时(例如签到密码等)也会使用 ***** 来隐藏掉真正的密码,那么这种方式是如何实现的呢?

我们这篇文章的实现思路就基于Hutool来实现,在Hutool中提供了一个名为 DesensitizedUtil 的工具类,我们使用这个工具类来加密。

首先我们先来看一下这个类里的具体实现,如下:

在这里插入图片描述
我们可以看到映入眼帘的除了一个无参构造之外就是一个名为 desensitized 的方法,这个方法就是我们加密的主要方法,里面利用了 switch…case 方法来区分不同的加密方法。我们可以来写一个单元测试来测试一下通过这个方法加密后是什么样的

在这里插入图片描述
以上为加密后的信息,里面我使用了不同的类型来进行加密,目前最新版的Hutool支持脱敏加密的类型如下

  • 用户ID
  • 中文名
  • 密码
  • 地址
  • 邮箱
  • 座机号
  • 手机号
  • 中国大陆的车牌号
  • 银行卡号
  • IPv4地址
  • IPv6地址
  • 自定义脱敏

具体实现demo

通过以上的示例我们就可以开始编写我们自己的脱敏操作了,首先我们要先根据以上Hutool中提供的脱敏类型来编写我们自己的类型**(如嫌麻烦也可省略此步骤,直接使用DesensitizedUtil中的DesensitizedType)**

编写数据脱敏类型

/*** @author Bummon* @description 数据脱敏策略* @date 2023-09-01 17:43*/
public enum DataMaskingType {/*** 用户ID*/USER_ID,/*** 中文名*/CHINESE_NAME,/*** 身份证号*/ID_CARD,/*** 座机*/FIXED_PHONE,/*** 手机号*/MOBILE_PHONE,/*** 地址*/ADDRESS,/*** 邮箱*/EMAIL,/*** 密码*/PASSWORD,/*** 中国大陆车牌号*/CAR_LICENSE,/*** 银行卡号*/BANK_CARD,/*** IPv4地址*/IPV4,/*** IPv6地址*/IPV6,/*** 自定义类型*/CUSTOM;}

编写自定义注解

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside

http://www.ppmy.cn/news/1287132.html

相关文章

2023.12.28 网络编程

目录 bytes和str类型的互相转换 TCP服务端代码 TCP客户端代码 一直运行服务器代码 一直运行客户端代码 网络编程三要素:ip地址,端口号,协议 端口号 0-65535 ,二的十六次方 TCP/IP协议 传输数据之前要建立连接,通过三次握手建立: 客户端 --> 服务…

【Google】关于Google Analytics埋点及API获取数据

本文是在实际操作中踩到的一些坑,并不是操作手册。具体的还是需要仔细按照官方文档操作。 参考文档:https://developers.google.com/analytics/ 重点看标红的文档即可 普通事件埋点 各端需要跟产品端确定好统一的事件名称和参数,否则数据混…

【MYSQL】MYSQL 的学习教程(七)之 慢 SQL 优化思路

1. 慢 SQL 优化思路 慢查询日志记录慢 SQLexplain 分析 SQL 的执行计划profile 分析执行耗时Optimizer Trace 分析详情确定问题并采用相应的措施 1. 慢查询日志记录慢 SQL 如何定位慢SQL呢? 我们可以通过 慢查询日志 来查看慢 SQL。 ①:开启慢查询日志…

AndroidR集成三方Native服务组件

一、背景 该项目为海外欧盟市场版本,需集成三方IDS安全组件,进程运行时注入iptables指令至链表,检测网络运行状态,并收集异常日志并压缩打包成gz文件,提供给Android上层应用上报云端。 二、分析 1、将提供的组件包集成至系统vendor分区 /vendor/bin/idsLogd/vendor/li…

【C#与Redis】--实践案例--案例 3:使用 Redis 实现排行榜

实现一个基本的排行榜系统通常涉及到对分数进行排序,而 Redis 的 Sorted Set 数据结构非常适合这种用途。以下是一个使用 StackExchange.Redis 库在 C# 中实现排行榜的简单案例: 安装 StackExchange.Redis 库: Install-Package StackExchan…

Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性

目录 1. 背景 2. Windows系统安装canal 3.Mysql准备工作 4. 公共依赖包 5. Redis缓存设计 6. mall-canal-service 1. 背景 canal [kənl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞…

ElasticSearch Nested类型全文检索、聚合查询

ElasticSearch Nested类型全文检索、聚合查询 Nested类型全文检索 创建索引 PUT /products1 {"mappings": {"properties": {"fulltext": {"type": "text"},"name": {"type": "text","…

【2023 CCF 大数据与计算智能大赛】基于TPU平台实现超分辨率重建模型部署 基于FSRCNN的TPU平台超分辨率模型部署方案

2023 CCF 大数据与计算智能大赛 基于TPU平台实现超分辨率重建模型部署 基于FSRCNN的TPU平台超分辨率模型部署方案 WELL 刘渝 人工智能 研一 西安交通大学 中国-西安 1461003622qq.com 史政立 网络空间安全 研一 西安交通大学 中国-西安 1170774291qq.com 崔琳、张…