数据脱敏的java代码
时间: 2023-03-25 13:04:41 浏览: 94
我可以回答这个问题。数据脱敏是指对敏感数据进行处理,以保护用户隐私。以下是一个简单的 Java 代码示例:
public static String desensitize(String data) {
if (data == null || data.length() == ) {
return "";
}
int len = data.length();
if (len <= 2) {
return "*";
}
int start = len / 4;
int end = start * 3;
StringBuilder sb = new StringBuilder(data);
for (int i = start; i < end; i++) {
sb.setCharAt(i, '*');
}
return sb.toString();
}
这个方法将字符串中的中间部分替换为星号,以达到脱敏的效果。
相关问题
数据脱敏代码springboot
好的,关于数据脱敏的代码,可以使用Spring Boot框架中的注解来实现。具体来说,可以使用@Sensitive注解来标记需要脱敏的字段,然后在序列化时对这些字段进行脱敏处理。
下面是一个示例代码:
```java
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
SimpleFilterProvider filterProvider = new SimpleFilterProvider();
filterProvider.addFilter("sensitiveFilter", SimpleBeanPropertyFilter.serializeAllExcept());
objectMapper.setFilterProvider(filterProvider);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return objectMapper;
}
}
```
在上面的代码中,我们定义了一个ObjectMapper的Bean,并且在其中设置了一个SimpleFilterProvider,用于过滤掉被@Sensitive注解标记的字段。同时,我们还设置了JsonInclude.Include.NON_NULL,用于过滤掉值为null的字段。
接下来,我们可以在需要脱敏的字段上添加@Sensitive注解,例如:
```java
public class User {
private Long id;
@Sensitive
private String name;
@Sensitive
private String phone;
// 省略getter和setter方法
}
```
在序列化时,被@Sensitive注解标记的字段会被过滤掉,从而实现了数据脱敏的效果。
java实现手机号身份证数据脱敏
以下是Java实现手机号和身份证号码的脱敏示例代码:
```java
public class DataMasking {
/**
* 对手机号进行脱敏处理
* @param phoneNum 手机号
* @return 脱敏后的手机号
*/
public static String maskPhoneNum(String phoneNum) {
if (phoneNum == null || phoneNum.trim().length() == 0) {
return "";
}
StringBuilder sb = new StringBuilder();
sb.append(phoneNum.substring(0, 3));
for (int i = 0; i < 4; i++) {
sb.append("*");
}
sb.append(phoneNum.substring(7));
return sb.toString();
}
/**
* 对身份证号码进行脱敏处理
* @param idNum 身份证号码
* @return 脱敏后的身份证号码
*/
public static String maskIdNum(String idNum) {
if (idNum == null || idNum.trim().length() == 0) {
return "";
}
StringBuilder sb = new StringBuilder();
sb.append(idNum.substring(0, 6));
for (int i = 0; i < 8; i++) {
sb.append("*");
}
sb.append(idNum.substring(14));
return sb.toString();
}
}
```
调用示例:
```java
String phoneNum = "13800138000";
String idNum = "440101199001011234";
System.out.println(DataMasking.maskPhoneNum(phoneNum)); // 输出:138****8000
System.out.println(DataMasking.maskIdNum(idNum)); // 输出:440101********1234
```
你可以根据实际需求,选择适合自己的脱敏方法和实现方式。