IT정보사전

[JAVA]정규식 개인정보(전화번호,이름) 마스킹 처리 본문

웹 프로그래밍

[JAVA]정규식 개인정보(전화번호,이름) 마스킹 처리

작은나무0530 2019. 9. 11. 09:18
728x90
반응형

안녕하세요~작은나무입니다!!
이번 포스팅은 정보보안을 위해 Java를 이용한 개인정보의 마스킹 처리에 대해 알아보고자 합니다.
정규식을 이용해서 간단하게 작성해 보도록 하겠습니다.

전화번호 가운대 자리 마스킹 처리
regex의 정규식에서 ()를 group으로 보고 group(2)를 통해 가운대 자리 마스킹처리가 처리됩니다.
앞자리는 group(1), 뒷자리는 group(3)이 됩니다. 전체를 마스킹하고 싶다면 ()로 묶지 않으면 됩니다.

public static String getMaskedPhoneNum(String phoneNum) {
    String regex = "(\\d{2,3})(\\d{3,4})(\\d{4})$";
    //String regex = "(\\d{2,3})-?(\\d{3,4})-?(\\d{4})$";		//휴대폰번호 '-' 포함
    Matcher matcher = Pattern.compile(regex).matcher(phoneNum);
    if (matcher.find()) {
        String replaceTarget = matcher.group(2);
        char[] c = new char[replaceTarget.length()];
        Arrays.fill(c, '*');

        return phoneNum.replace(replaceTarget, String.valueOf(c));
    }
    
    return phoneNum;
}

 

이름 가운대 마스킹 처리
성과 이름 마지막을 제외하고 마스킹을 처리하는 방법입니다.
length()가 2자리수 이상일 경우 마스킹하고 1자리일 경우는 마스킹 처리하지 않습니다.

public static String getMaskedName(String name) {
    String maskedName = "";     // 마스킹 이름
    String firstName = "";      // 성
    String middleName = "";     // 이름 중간
    String lastName = "";       //이름 끝
    int lastNameStartPoint;     // 이름 시작 포인터
    
    if(!name.equals("") || name != null){
        if(name.length() > 1){
            firstName = name.substring(0, 1);
            lastNameStartPoint = name.indexOf(firstName);
            
            if(name.trim().length() > 2){
                middleName = name.substring(lastNameStartPoint + 1, name.trim().length()-1);
                lastName = name.substring(lastNameStartPoint + (name.trim().length() - 1), name.trim().length());
            }else{
                middleName = name.substring(lastNameStartPoint + 1, name.trim().length());
            }
            
            String makers = "";
            for(int i = 0; i < middleName.length(); i++){
                makers += "*";
            }
            
            lastName = middleName.replace(middleName, makers) + lastName;
            maskedName = firstName + lastName;
        }else{
            maskedName = name;
        }
    }
    
    return maskedName;
}

위의 내용을 바탕으로 이메일, 주소, 생년월일등에 대한 마스킹도 작성해 볼수 있을 것 같습니다.

728x90
반응형
그리드형
Comments