# lp-sensitive-spring-boot-starter **Repository Path**: vip-zywork/lp-sensitive-spring-boot-starter ## Basic Information - **Project Name**: lp-sensitive-spring-boot-starter - **Description**: 数据脱敏 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-08-17 - **Last Updated**: 2023-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: 数据脱敏 ## README 在开发中,因业务需要,有时要对一些敏感数据,进行加密存储,或展示,我们利用mybatis的一些特性进行脱敏处理,无需在业务逻辑中硬编码,每次去加密解密; *** ## 使用 引入依赖: ```xml vip.zywork lp-sensitive-spring-boot-starter 2023.08.20 ``` *** ### 第一种:入库需要加密,出库解密,前端展示脱敏 在需要脱敏的字段上添加注解:`@Sensitive` #### 比如前端显示手机号:188****8888 #### 数据库存储: ![](https://tcs-devops.aliyuncs.com/storage/112x987e92f8ee148e17e9f6784560a38bab?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9hcHBJZCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9vcmdhbml6YXRpb25JZCI6IjYxOTcwODkyY2M2ZTMxZjUzZDE3ZDJjYyIsImV4cCI6MTY5MzE5MjQ0NiwiaWF0IjoxNjkyNTg3NjQ2LCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzExMng5ODdlOTJmOGVlMTQ4ZTE3ZTlmNjc4NDU2MGEzOGJhYiJ9.dGhZkE4kDGfkRSogaDvlGqpXmAa5DdK8NVK71-tcf38) ```java @Sensitive(displayType = SensitiveEnum.MOBILE_PHONE) private SensitiveType phone; ``` 其中`displayType = SensitiveEnum.MOBILE_PHONE`代表字段在前端展示的隐藏效果类型是手机号格式,还支持身份证号、家庭地址、邮箱等其他类型等,具体查看源码 ** **SensitiveType类型是专门为需要入库加密字段创建的一个类型,**所有需要入库加密的字段都必须使用该类型**,里面有个属性value,也就是说值在value里 ![](https://tcs-devops.aliyuncs.com/storage/112w30cc58e3cb80a2b09f7af23465ddd96c?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9hcHBJZCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9vcmdhbml6YXRpb25JZCI6IiIsImV4cCI6MTY5Mjg0ODI2OSwiaWF0IjoxNjkyMjQzNDY5LCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzExMnczMGNjNThlM2NiODBhMmIwOWY3YWYyMzQ2NWRkZDk2YyJ9.5dseSMGbB6jssPkFoQeIOen2ixGwoi53OOWv4XK8XtQ&download=image.png "") 不加注解返回值是这样的 ![](https://tcs-devops.aliyuncs.com/storage/112waee1922c0d77c0177cf8e8c641b928f9?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9hcHBJZCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9vcmdhbml6YXRpb25JZCI6IiIsImV4cCI6MTY5Mjg0ODI2OSwiaWF0IjoxNjkyMjQzNDY5LCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzExMndhZWUxOTIyYzBkNzdjMDE3N2NmOGU4YzY0MWI5MjhmOSJ9.dgdIbtQID7KbXn6jyHeK_qbjHPC7zuHxUVO8DueboFc&download=image.png "") *** ### 第二种:只在前端展示脱敏 只需要添加注解就行 ```java @Sensitive(displayType = SensitiveEnum.ADDRESS) private String address; ``` 返回值是这样的 ![](https://tcs-devops.aliyuncs.com/storage/112wcd41b7c4e2371ec84e63b4ae3caeea5c?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9hcHBJZCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9vcmdhbml6YXRpb25JZCI6IiIsImV4cCI6MTY5Mjg0ODI2OSwiaWF0IjoxNjkyMjQzNDY5LCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzExMndjZDQxYjdjNGUyMzcxZWM4NGU2M2I0YWUzY2FlZWE1YyJ9.hCOsDEo8IM1omYxIYWGGv34JlnhYihtx4I7VgMHxVm0&download=image.png "") 如果想自定义隐藏长度,可以在注解中按照下面示例: ```java @Sensitive(displayType = SensitiveEnum.NONE,front = 1,end = 1) private String name; ``` 其中,displayType 必须设为NONE,front表示保留前几位,end表示保留后几位 ## 总结 入库加解密用`SensitiveType`类型修饰字段,只要mapper方法的入参或者返回值里包含这个类型,就出自动触发加解密(入参加密,出参解密),所以在**使用mybatis-plus时,入参的类型应该也是SensitiveType类型的才会触发效果** ```java @GetMapping("/findByPhone") public ResponseResult findByPhone(SensitiveType phone){ ParkingDemo one = parkingDemoService.getOne(Wrappers.lambdaQuery().eq(ParkingDemo::getPhone, phone)); return ResponseResult.success(one); } ``` 前端显示脱敏,在字段上添加注解`@Sensitive`