Noah_Developer
Developer Noah
Noah_Developer
전체 방문자
오늘
어제
  • 전체보기 (88)
    • Programmers (33)
      • Level1 (33)
    • FRONT-END (3)
      • React (2)
      • HTML (0)
      • CSS (0)
      • JavaScrpit (1)
    • BACK-END (23)
      • JAVA (14)
      • C (0)
      • Spring (5)
    • DATABASE (11)
      • MySQL (3)
      • Oracle (0)
    • IDE (2)
      • IntelliJ (2)
      • Eclipse (0)
      • VSCode (0)
    • Android (1)
    • 용어 (2)
      • 금융 (2)
    • Developer Diary (5)
      • Web (1)
    • 자격증 (1)
    • Operating System (3)
      • Linux (2)
    • Info (3)

블로그 메뉴

  • 홈
  • 방명록
  • 포트폴리오
  • 깃허브

공지사항

  • 🙏 방문 감사합니다.

인기 글

태그

  • 코딩테스트 문제
  • 코딩테스트 문제 풀이
  • programmers
  • 알고리즘 블로그
  • 알고리즘 문제
  • 프로그래머스 문제풀이
  • 카카오 블라인드 테스트
  • 자바 알고리즘 연습문제
  • 카카오 블라인드
  • 개발일기
  • 초보자 알고리즘
  • MySQL
  • 크레인 인형뽑기 정답
  • 프로그래머스 레벨1
  • 카카오공채
  • 자바 쉬운 알고리즘
  • 알고리즘 쉬운문제
  • 크레인 인형뽑기 풀이
  • level1
  • 코딩테스트
  • 알고리즘 풀이
  • 프로그래머스
  • 코딩테스트 준비
  • 크레인 인형뽑기
  • String StringBuilder 차이
  • 프로그래머스 연습문제
  • 알고리즘 예제
  • 프로그래머스 코딩연습
  • programmers level 1
  • 알고리즘 연습문제

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Noah_Developer

Developer Noah

[Java] 마스킹 알고리즘 (Masking Algorithm)
BACK-END/JAVA

[Java] 마스킹 알고리즘 (Masking Algorithm)

2021. 4. 22. 16:36
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
    'BACK-END/JAVA' 카테고리의 다른 글
    • [Java] 문자 길이를 고정 처리하여 보기 좋게 만들자.
    • [JAVA] 메인 메소드에서 클래스 생성하기
    • [Java] 로그 생성 파일 경로 추출
    • [Java] 알고리즘 문자열 2진 검색(Binary Search) 예제
    Noah_Developer
    Noah_Developer
    개발 기록 목적을 가진 블로그입니다.

    티스토리툴바