본문 바로가기
JAVA 프로그래밍

개인정보 마스킹(masking) 처리

by @ENFJ 2023. 9. 21.

알아야 할 개념

 

substr() 함수 사용법에 대해 알아야 한다.

 

 

1. 휴대폰 번호 마스킹(phone number masking)

public class Main
{
public static void main(String[] args) {
// 번호 설정
        String phoneNum = "01012341234";
        
        // 마스킹할 번호가 존재해야 하므로
        if(phoneNum != null && !"".equals(phoneNum)){
         phoneNum = phoneNum.substring(0,3) + "****" 
             + phoneNum.substring(phoneNum.length()-4, phoneNum.length());
        }
        
        System.out.println("휴대폰 번호 마스킹 : " + phoneNum);
}
}



>> 휴대폰 번호 마스킹 : 010****1234

2. 계좌번호 마스킹(account number masking)

public class Main
{
	public static void main(String[] args) {
		// 계좌번호 설정(은행마다 자릿수 틀림. 11 ~ 13자리 사이)
        // 예시는 13자리
        String accountNum = "0001111123456";
        
        // 계좌번호 앞 3자리, 맨 뒤 3자리를 빼고 마스킹
        if(accountNum != null && !"".equals(accountNum)){
        	// 계좌번호 가운데 글자 마스킹 변수 선언
            String middleMask = accountNum.substring(3, accountNum.length()-3);
            // 마스킹 변수 선언(*)
            String masking = "";
            
            // 앞 3자리, 맨뒤 3자리를 빼고 모두 마스킹 하기위한 증감값
            for(int i = 0; i < middleMask.length(); i++){
            	masking += "*";
            }
            
            accountNum = accountNum.substring(0,3)
            	+ accountNum.replace(middleMask, masking)
                + accountNum.substring(accountNum.length()-3, accountNum.length());
        }
        
        System.out.println("계좌번호 마스킹 : " + accountNum);
	}
}

>> 계좌번호 마스킹 : 000*******456

 

맨뒤 3자리를 제외한 나머지 계좌번호 마스킹 처리(java)

// 계좌번호 설정(은행마다 자릿수 틀림. 11 ~ 13자리 사이)
// 예시는 13자리

public class Main
{
	public static void main(String[] args) {
		//계좌변호 accountNum 변수에 담아둔다.
        String accountNum = "0001111123456";
        
        
        // 계좌번호 accountNum이 null 아니면서 공백이 아닐경우 -> // 계좌번호 앞 3자리, 맨 뒤 3자리를 빼고 마스킹
        if(accountNum != null && !"".equals(accountNum)){
        	// 계좌번호 글자 마스킹 변수 선언
            String Mask = accountNum.substring(0, accountNum.length());
            
            
            // 마스킹 변수 선언(*)
            String masking = "";
            
            // 앞 3자리, 맨뒤 3자리를 빼고 모두 마스킹 하기위한 증감값
            for(int i = 0; i < Mask.length(); i++){
            	masking += "*";
            }
            
            // 인덱스 0~2번 까지 (총3개) 문자열 자르기.
            accountNum = accountNum.substring(0,0)
                // Mask -> masking으로 치환하기.
            	+ accountNum.replace(Mask, masking) 
            	// 문자열 끝에서부터 3글자만 출력하고 싶다!
                + accountNum.substring(accountNum.length()-3, accountNum.length());
        }
        
        System.out.println("계좌번호 마스킹 : " + accountNum);
	}
}

 

수정 한 최종 코드

// 계좌번호 설정(은행마다 자릿수 틀림. 11 ~ 13자리 사이)
// 예시는 13자리

public class Main
{
	public static void main(String[] args) {
		//계좌변호 accountNum 변수에 담아둔다.
        String accountNum = "1232121111123456";
        
        // 계좌번호 accountNum이 null 아니면서 공백이 아닐경우
        if(accountNum != null && !"".equals(accountNum)){
        	// 계좌번호 마스킹처리할 영역지정해서 Mask 변수에 담아두고,
            String Mask = accountNum.substring(0, accountNum.length());
            // 마스킹 변수 선언(*)
            String masking = "";
            //맨뒤 3자리를 빼고 모두 마스킹 하기위한 증감값
            for(int i = 0; i < Mask.length(); i++){
            	masking += "*";
            }
            // Mask(마스킹 처리할 부분) -> masking(*)로 치환(replace)하기.
            accountNum = accountNum.replace(Mask, masking)
            // 문자열 끝에서부터 3글자만 출력하고 싶다!
            + accountNum.substring(accountNum.length()-3, accountNum.length());
        }
        
        //출력
        System.out.println("계좌번호 마스킹 : " + accountNum);
	}
}

출력 결과:


        또 다른 계좌번호 마스킹 처리 방법

public class Main
{
	public static void main(String[] args) {
		//계좌변호 accountNum 변수에 담아둔다.
        String accountNum = "123456";
        
        if (accountNum !=null && !"".equals(accountNum)){
        // 계좌번호 마스킹처리할 영역지정해서 Mask 변수에 담아두고  ,
        String Mask = accountNum.substring(accountNum.length()-3, accountNum.length());
        // 마스킹 변수 선언(*)
        String masking = "";

        for(int i = 0; i < accountNum.length()-3; i++){
            masking += "*";
        }
        
        System.out.println(masking + Mask);
        }
	}
}