カスタム注釈によるデータの脱敏
カスタム注釈によるデータの脱敏
説明
ユーザーの身分証明書の表示を実現する必要があるが、機密データは隠す必要がある.
コード#コード#
コードは次のとおりです(例).
使用
説明
ユーザーの身分証明書の表示を実現する必要があるが、機密データは隠す必要がある.
コード#コード#
コードは次のとおりです(例).
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
/**
* @program: chargingpile
* @description:
* @author: Mr.ch
* @create: 2020-08-07
**/
public class EncryptSerializer extends JsonSerializer<String> {
@Override
public void serialize(String value, JsonGenerator generator, SerializerProvider serializer) throws IOException {
if (StringUtils.isNotBlank(value)) {
generator.writeString(IdEncryptUtil.numberEncrypt(value));
} else {
generator.writeNull();
}
}
}
import org.apache.commons.lang3.StringUtils;
public class IdEncryptUtil {
public static final Integer PHONE_NUM_LENGTH = 11;
public static final Integer PERSON_NUM_LENGTH = 18;
public static final Integer BANK_CARD_ID_MIN_LENGTH = 15;
public static final Integer BANK_CARD_ID_MAX_LENGTH = 19;
public IdEncryptUtil() {
}
/**
*
*/
public static String phoneNumEncrypt(String phoneNum) {
return !StringUtils.isEmpty(phoneNum) && phoneNum.length() >= PHONE_NUM_LENGTH ? phoneNum.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*") : phoneNum;
}
/**
*
*/
public static String personIdEncrypt(String personId) {
return !StringUtils.isEmpty(personId) && personId.length() >= PERSON_NUM_LENGTH ? personId.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*") : personId;
}
/**
*
*/
public static String bankCardNumEncrypt(String bankCarNo) {
return !StringUtils.isEmpty(bankCarNo) && bankCarNo.length() >= BANK_CARD_ID_MIN_LENGTH && bankCarNo.length() <= BANK_CARD_ID_MAX_LENGTH ? bankCarNo.replaceAll("(?<=\\w{4})\\w(?=\\w{4})", "*") : bankCarNo;
}
/**
*
*/
public static String numberEncrypt(String bankCarNo) {
return StringUtils.isEmpty(bankCarNo) ? bankCarNo : bankCarNo.replaceAll("(?<=\\w{4})\\w(?=\\w{4})", "*");
}
}
使用
@Data
public class CpUserVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@JsonSerialize(using = EncryptSerializer.class)
private String idCard;
}