728x90
자바 마스킹 알고리즘 관련 예제입니다.
상세 설명은 주석을 통해 메모 해두었으니 참고 하시어 봐주시길 바라며,
궁금하신 사항은 댓글로 부탁드립니다.
package ew;
public class MaskingAlgorithm {
/// Fields
/// Constructor
/// Method
public static void main(String[] args) {
// case 1. 주민등록번호
String data = "9607201111111";
// case 1-1. 주민등록번호 길이 측정.
System.out.println("주민등록번호의 길이 : " + data.length());
// case 1-2. 주민등록번호 앞자리의 길이 만큼 뺀 값(7)만큼 데이터 오른쪽을 Masking 처리
String dataTest = getMaskingReplace(data, "right", data.length()-6);
// case 1-3. 마스킹 처리된 데이터 확인
System.out.println("마스킹 처리된 data : " + dataTest);
// case 2. 전화번호
String tele = "01012345678";
// case 2-1. 전화번호 길이 측정
System.out.println("전화번호의 길이 : " + tele.length());
// case 2-2. 전화번호 마스킹 처리를 위해 파라미터 "tele" 전달
String teleTest = getMaskingReplace(tele, "tele", 0);
System.out.println("마스킹 처리된 tele : " + teleTest);
// case 3. N 자릿수 형식
String len = "1234567890";
// case 3-1. N자릿수 형식의 길이 측정
System.out.println("N 자릿수 데이터 형식의 길이 : " + len.length());
// case 3-2. 주민등록번호나, 전화번호의 형식이 아닐 경우 처리를 위해
// 파라미터 "other"로 처리
String lenTest = getMaskingReplace(len, "other", 0);
System.out.println("마스킹 처리된 N 자릿수 : " + lenTest);
}
/**
* 전달받은 파라미터으로 *표시로 변환해주는 메소드
* @param data 처리할 데이터
* @param location 처리할 파라미터 (tele, other, right, left)
* @param unit right, left 처리시 처리할 자릿수 전달하기 위한 파라미터
* @return
*/
public static String getMaskingReplace(String data, String location, int unit) {
StringBuffer replaceData = new StringBuffer(); // 결과값
int len = 0; // 문자열길이
len = data.length();
String regex = ""; // 타입에 맞는 마스킹 처리
StringBuffer masking = new StringBuffer();
if ( "tele".equals(location) ) {
data = data.replace(" ", "");
len = data.length();
replaceData.append(data.substring(0, 3));
for ( int i = 0; i < 4; i++ ) {
masking.append("*");
}
replaceData.append(masking);
replaceData.append(data.substring(7, len));
} else if ( "other".equals(location) ) {
data = data.replace(" ", "");
len = data.length();
replaceData.append(data.substring(0, 3));
for ( int i = 0; i < 6; i++ ) {
masking.append("*");
}
replaceData.append(masking);
replaceData.append(data.substring(7, len));
} else if ( "right".equals(location) ) {
for ( int i = 0; i < unit; i++ ) {
masking.append("*");
}
replaceData.append(data.replace(data.substring(data.length() - unit, data.length()), ""));
replaceData.append(masking);
} else if ( "left".equals(location) ) {
for ( int i = 0; i < unit; i++ ) {
masking.append("*");
}
replaceData.append(data.replace(data.substring(0, unit), ""));
replaceData.append(masking);
}
return replaceData.toString();
}
}
728x90
'BACK-END > JAVA' 카테고리의 다른 글
[Java] 문자 길이를 고정 처리하여 보기 좋게 만들자. (0) | 2021.05.18 |
---|---|
[JAVA] 메인 메소드에서 클래스 생성하기 (0) | 2021.05.03 |
[Java] 로그 생성 파일 경로 추출 (0) | 2021.04.19 |
[Java] 알고리즘 문자열 2진 검색(Binary Search) 예제 (0) | 2021.04.16 |
[Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제 (0) | 2021.04.15 |