지대한
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