본문 바로가기
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);
}
}
}