지대한
8 months ago
1 changed files with 106 additions and 0 deletions
@ -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…
Reference in new issue