字段脱敏第3-6位 Java编写
时间: 2024-06-08 15:12:28 浏览: 5
假设需要将字符串中第3-6位替换为星号,可以使用以下代码实现:
```java
public static String desensitize(String str) {
if (str == null || str.length() < 6) {
return str;
}
char[] chars = str.toCharArray();
for (int i = 2; i < 6 && i < chars.length; i++) {
chars[i] = '*';
}
return new String(chars);
}
```
使用示例:
```java
String str = "13512345678";
String desensitizedStr = desensitize(str);
System.out.println(desensitizedStr); // 输出:135****5678
```
相关问题
怎么实现java字段脱敏
实现Java字段脱敏可以采用以下方法:
1. 使用正则表达式替换字符串中的敏感信息,例如手机号、身份证号等。可以使用Java中的replace()或replaceAll()方法。
2. 使用加密算法对敏感信息进行加密处理,例如SHA、MD5等。可以使用Java中的MessageDigest类进行加密。
3. 使用掩码替换敏感信息,例如将手机号的中间四位替换成****。可以使用Java中的String.format()方法。
4. 使用第三方库或工具类进行脱敏,例如阿里云的SensitiveWordUtil、Spring的SensitiveDataHandler等。
无论采用哪种方法,都应该确保脱敏后的数据与原始数据的对应关系不丢失,以确保后续使用的正确性。
用 java springboot 写一个字段脱敏注解
好的,我可以帮你实现一个用 Java Spring Boot 写的字段脱敏注解。以下是实现步骤:
1. 创建一个自定义注解 `SensitiveInfo`,用于标注需要脱敏的字段。
```java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SensitiveInfo {
}
```
2. 创建一个切面 `SensitiveInfoAspect`,在该切面中对标注了 `SensitiveInfo` 注解的字段进行脱敏处理。
```java
@Aspect
@Component
public class SensitiveInfoAspect {
/**
* 对标注了 @SensitiveInfo 注解的字段进行脱敏处理
*/
@Around("@annotation(sensitiveInfo)")
public Object around(ProceedingJoinPoint joinPoint, SensitiveInfo sensitiveInfo) throws Throwable {
Object result = joinPoint.proceed();
if (result != null && result instanceof String) {
// 进行脱敏处理,这里只是简单地把字符串替换为 *
result = ((String) result).replaceAll(".", "*");
}
return result;
}
}
```
3. 在需要使用脱敏注解的实体类中,使用 `@SensitiveInfo` 注解标注需要脱敏的字段。
```java
public class User {
@SensitiveInfo
private String name;
@SensitiveInfo
private String idCard;
// 省略其他字段和方法
}
```
这样,当我们获取 `User` 对象中 `name` 和 `idCard` 的值时,就会自动进行脱敏处理了。
注意,这里只是一个简单的示例,实际应用中需要根据具体业务需求来进行脱敏处理。