Browse Source

feat: util - masking 추가

pull/6/head
지대한 8 months ago
parent
commit
c06fe45fe1
  1. 106
      common/util/src/main/java/kr/co/palnet/kac/util/MaskingUtil.java

106
common/util/src/main/java/kr/co/palnet/kac/util/MaskingUtil.java

@ -0,0 +1,106 @@
package kr.co.palnet.kac.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MaskingUtil {
public static String maskString(String originalString, int start, int end) {
String mask = originalString.substring(start, end).replaceAll(".", "*");
return originalString.substring(0, start) + mask + originalString.substring(end);
}
public static String maskStringEndWith(String originalString, int end) {
return maskString(originalString, 0, end);
}
public static String maskStringStartWith(String originalString, int start) {
return maskString(originalString, start, originalString.length());
}
public static String maskEmail(String email) {
return email.replaceAll("(?<=.{3}).(?=[^@]*?@)", "*");
}
public static String maskEmailAndDomain(String email) {
String regex = "(.+)@(.+)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
if (matcher.find()) {
String localPart = matcher.group(1);
String domain = matcher.group(2);
localPart = maskString(localPart, 3, localPart.length());
domain = maskString(domain, 3, domain.length());
return localPart + "@" + domain;
}
return email;
}
public static String maskCardNumber(String cardNumber) {
// return cardNumber.replaceAll("\\b(\\d{6})(\\d+)(\\d{4})\\b", "$1****$2");
// 하이픈 제거
String cardNumberWithoutHyphens = cardNumber.replace("-", "");
// 마스킹 적용
StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile("(\\d{6})(\\d+)(\\d{4})");
Matcher matcher = pattern.matcher(cardNumberWithoutHyphens);
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1) + "*".repeat(matcher.group(2).length()) + matcher.group(3));
}
matcher.appendTail(sb);
String maskedCardNumber = sb.toString();
// Return the card number in the original format
return cardNumber.contains("-")
? maskedCardNumber.replaceAll("(\\d{4})(.{4})(.{4})(\\d{3,4})", "$1-$2-$3-$4")
: maskedCardNumber;
}
public static String maskName(String name) {
if (name.length() == 1) {
return "*";
} else if (name.length() == 2) {
return name.replaceAll("(?<=.).", "*");
} else {
return name.replaceAll("(?<=.).(?=.)", "*");
}
}
public static String maskPhoneNumber(String phoneNumber) {
// 하이픈 제거
String phoneNumberWithoutHyphens = phoneNumber.replace("-", "");
// 마스킹 적용
StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile("(02|0\\d{2})(\\d+)(\\d{4})");
Matcher matcher = pattern.matcher(phoneNumberWithoutHyphens);
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1) + "*".repeat(matcher.group(2).length()) + matcher.group(3));
}
matcher.appendTail(sb);
String maskedPhoneNumber = sb.toString();
return phoneNumber.contains("-")
? maskedPhoneNumber.replaceAll("(\\d{2,3})(.{3,4})(\\d{4})", "$1-$2-$3")
: maskedPhoneNumber;
}
public static String maskExpireDate(String expireDate) {
return expireDate.replaceAll("(\\d{2})(\\d{2})", "$1/$2");
}
public static String maskResidentRegistrationNumber(String rrn) {
return rrn.replaceAll("(\\d{6}-?\\d{1})(\\d{6})", "$1******");
}
public static String maskIp(String ip) {
return ip.replaceAll("^(\\d+)(\\.\\d+\\.\\d+\\.\\d+)$", "***$2");
}
}
Loading…
Cancel
Save