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

网站开发人员绩效如何计算北京网络营销推广外包

网站开发人员绩效如何计算,北京网络营销推广外包,网站和网页有什么区别,做征婚网站有哪些什么是数据脱敏 数据脱敏是指对某些敏感信息,例如姓名、身份证号码、手机号、固定电话、银行卡号、邮箱等个人信息,通过脱敏算法进行数据变形,以保护敏感隐私数据。 数据脱敏通常涉及以下几种主要方法: 替换: 将原始…

什么是数据脱敏

数据脱敏是指对某些敏感信息,例如姓名、身份证号码、手机号、固定电话、银行卡号、邮箱等个人信息,通过脱敏算法进行数据变形,以保护敏感隐私数据。

数据脱敏通常涉及以下几种主要方法:

  1. 替换: 将原始数据中的敏感信息替换为不敏感的等效数据。例如,将真实姓名替换为随机生成的名称,将电话号码替换为虚构的号码。
  2. 扰动: 对数据进行微小的变化,以使其仍然保持某种程度的统计一致性,但不足以使个人身份可被轻松识别。这包括添加噪声或对数值进行微小的随机化。
  3. 屏蔽: 将敏感信息从数据中删除或隐藏。例如,用特定字符或占位符替换敏感文本。
  4. 一般化: 减少数据的精确度,使得数据更加模糊。例如,将年龄精确到天数的数据一般化为年龄范围。
  5. 删除: 完全删除不必要的敏感信息。

Spring Boot自定义注解实现数据脱敏

依赖版本

  • JDK 17
  • Spring Boot 3.2.0
  • Hutool-core 5.8.24 (非必须)

源码地址:Gitee

导入依赖

<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-core</artifactId><version>5.8.24</version></dependency>
</dependencies>

自定义脱敏类型枚举

/*** @description 数据脱敏策略枚举*/
public enum DesensitizationTypeEnum {//自定义CUSTOM,//用户idUSER_ID,//中文名CHINESE_NAME,//身份证号ID_CARD,//座机号FIXED_PHONE,//手机号MOBILE_PHONE,//地址ADDRESS,//电子邮件EMAIL,//密码PASSWORD,//中国大陆车牌,包含普通车辆、新能源车辆CAR_LICENSE,//银行卡BANK_CARD
}

自定义脱敏序列化器

import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.yiyan.study.annotation.Desensitization;
import com.yiyan.study.enums.DesensitizationTypeEnum;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;import java.io.IOException;
import java.util.Objects;/*** @description 自定义脱敏序列化类*/
@AllArgsConstructor
@NoArgsConstructor
public class DesensitizationSerialize extends JsonSerializer<String> implements ContextualSerializer {private DesensitizationTypeEnum type;private Integer startInclude;private Integer endExclude;@Overridepublic void serialize(String str, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {switch (type) {// 自定义类型脱敏case CUSTOM -> jsonGenerator.writeString(CharSequenceUtil.hide(String.valueOf(str), startInclude,endExclude >= startInclude ? endExclude : str.length() + endExclude));// userId脱敏case USER_ID -> jsonGenerator.writeString(String.valueOf(DesensitizedUtil.userId()));// 中文姓名脱敏case CHINESE_NAME -> jsonGenerator.writeString(CharSequenceUtil.hide(String.valueOf(str), 1, str.length()));// 身份证脱敏case ID_CARD -> jsonGenerator.writeString(DesensitizedUtil.idCardNum(String.valueOf(str), 1, 2));// 固定电话脱敏case FIXED_PHONE -> jsonGenerator.writeString(DesensitizedUtil.fixedPhone(String.valueOf(str)));// 手机号脱敏case MOBILE_PHONE -> jsonGenerator.writeString(DesensitizedUtil.mobilePhone(String.valueOf(str)));// 地址脱敏case ADDRESS -> jsonGenerator.writeString(DesensitizedUtil.address(String.valueOf(str), 8));// 邮箱脱敏case EMAIL -> jsonGenerator.writeString(DesensitizedUtil.email(String.valueOf(str)));// 密码脱敏case PASSWORD -> jsonGenerator.writeString(DesensitizedUtil.password(String.valueOf(str)));// 中国车牌脱敏case CAR_LICENSE -> jsonGenerator.writeString(DesensitizedUtil.carLicense(String.valueOf(str)));// 银行卡脱敏case BANK_CARD -> jsonGenerator.writeString(DesensitizedUtil.bankCard(String.valueOf(str)));}}@Overridepublic JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {if (beanProperty != null) {// 判断数据类型是否为String类型if (Objects.equals(beanProperty.getType().getRawClass(), String.class)) {// 获取定义的注解Desensitization desensitization = beanProperty.getAnnotation(Desensitization.class);if (desensitization == null) {desensitization = beanProperty.getContextAnnotation(Desensitization.class);}if (desensitization != null) {return new DesensitizationSerialize(desensitization.type(), desensitization.startInclude(),desensitization.endExclude());}}return serializerProvider.findValueSerializer(beanProperty.getType(), beanProperty);}return serializerProvider.findNullValueSerializer(null);}
}

自定义脱敏注解

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yiyan.study.enums.DesensitizationTypeEnum;
import com.yiyan.study.serialize.DesensitizationSerialize;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 脱敏注解*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using = DesensitizationSerialize.class)
public @interface Desensitization {/*** 脱敏数据类型,CUSTOM注解下,startInclude和endExclude生效*/DesensitizationTypeEnum type() default DesensitizationTypeEnum.CUSTOM;/*** 脱敏开始位置(包含)*/int startInclude() default 0;/*** 脱敏结束位置(不包含)*/int endExclude() default 0;
}

数据脱敏测试

定义测试对象

import com.yiyan.study.annotation.Desensitization;
import com.yiyan.study.enums.DesensitizationTypeEnum;
import lombok.Builder;
import lombok.Data;import java.io.Serializable;@Data
@Builder
public class DesensitizationDTO implements Serializable {@Desensitization(type = DesensitizationTypeEnum.CHINESE_NAME)private String username;@Desensitization(type = DesensitizationTypeEnum.EMAIL)private String email;@Desensitization(type = DesensitizationTypeEnum.ADDRESS)private String address;@Desensitization(type = DesensitizationTypeEnum.MOBILE_PHONE)private String phoneNumber;@Desensitization(type = DesensitizationTypeEnum.CUSTOM, startInclude = 1, endExclude = -2)private String note;
}

测试接口

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yiyan.study.model.DesensitizationDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** 启动类*/
@SpringBootApplication
@Slf4j
@RestController
public class DesensitizationApplication {private static final DesensitizationDTO dto = com.yiyan.study.model.DesensitizationDTO.builder().username("小李").phoneNumber("12300000456").email("li@gmail.com").address("XX.YY.DD.FF").note("123456789").build();public static void main(String[] args) throws JsonProcessingException {SpringApplication.run(DesensitizationApplication.class, args);ObjectMapper mapper = new ObjectMapper();String s = mapper.writeValueAsString(dto);log.info("Json : {}", s);}@GetMapping("/test")public DesensitizationDTO desensitizationTest() {return dto;}
}

springboot3-数据脱敏

http://www.mmbaike.com/news/90107.html

相关文章:

  • 江苏网站建设seo竞价排名
  • wordpress前后台域名分离seo综合诊断工具
  • 怎么做类似站酷的网站信阳百度推广公司电话
  • 青海网站建设有哪些目前搜索引擎排名
  • 个人网站模板html 下载郑州网站建设哪家好
  • 中国建设集团有限责任公司佛山网站seo
  • 适合女孩做的网站什么是网络营销推广
  • 响应式的网站做优化好吗seo公司费用
  • 股票配资网站开发上海排名优化推广工具
  • 制作系统免费网站seo排名优化
  • wordpress建立购物网站百度大数据分析
  • 知名做网站的公司营销型网站的类型
  • 网站建设新际自动点击竞价广告软件
  • 新站网站如何做Seo什么是广告营销
  • 如何用php做网站管理系统东莞网站优化公司
  • 成都手机网站建设查看百度关键词价格
  • 个人网站需要什么内容百度收录情况查询
  • 建设部网站查询关键词优化哪家好
  • 直接做的黄页视频网站谷歌google下载安卓版 app
  • 湖南做网站哪家好2024年4月新冠疫情结束了吗
  • 电商网站开发教材竞价托管的注意事项
  • 网站开发进度把握可口可乐网络营销策划方案
  • 购物网站风格百度推广代理加盟
  • 做网站 赚钱吗怎么做公众号
  • 网站开发背景怎么建网站免费的
  • 鞍山做网站公司专业做网站公司
  • b2c网站的销售设计流程在线域名查询网站
  • 专业网站建设报价义乌百度广告公司
  • 重庆做网站哪家好友情链接网站
  • 企业网站建设合同松原新闻头条