개인정보 마스킹에 사용할 java정규식 정리

 

1. 주민번호

ex> 811008-1000000 -> 811008-1******

tempStr.replaceAll("(.{6}$)", "******") => 6자리 숫자로 끝나는 문자를 * 6자리로 변경

tempStr = "저의 주민번호는 801208-1000000 입니다.";

- 숫자6자리-1~4한자리숫자6자리 정보중 마지막6자리를 *으로 변경
tempStr.replaceAll("([0-9]{6})-([1-4]{1})([0-9]{6})", "$1-$2******");

 

2. 전화번호

ex> 010-0000-0000 -> 010-****-0000

tempStr.replaceAll("-[0-9]{4}-", "-****-") => -으로 시작하고 4자리 숫자-으로 끝나는 문장을 -****- 으로 변경

 

ex> 010-0000-0000 -> 010-0000-****

tempStr.replaceAll("-[0-9]{4}$", "-****") => -으로 시작하고 4자리 숫자로 끝나는 부분을 -**** 으로 변경

 

3. 이메일

ex> test12345@naver.com -> ******@naver.com

tempStr.replaceAll("[a-z,A-Z,0-9]+@", "******@") => @이 마지막에 포함된 문장을 *****@으로 변경

->주간만 변경 해야 하는경우가 있어서 갱신 예정

 

4. 이름

ex> 홍길동 -> 홍길* or 홍**

tempStr.replaceAll("(?<=.{2}).", "*") => 길이 기준으로 2글자 이후의 문자는 *으로 변경

tempStr.replaceAll("(?<=.{1}).", "*") => 길이 기준으로 1글자 이후의 문자는 *으로 변경

앞에만 변경 하려는 경우

tempStr.replaceAll(".(?=.{2})", "*") => 길이 기준으로 2글자 남기고 앞에만 *으로 변경(*길동)

위에서 사용한 정규식의 경우 전방탐색, 후방탐색에 해당하는 내용으로 아래의 내용을 참고해서 좀더 검색 하면 다른

부분에도 활용 가능 합니다.

(

(?=) 긍정형 전방탐색
(?!) 부정형 전방탐색
(?<=) 긍정형 후방탐색
(?<!) 부정형 후방탐색

)

 

5. 여권번호

ex> M12345678 -> M1234****

- M으로 시작하고(^인자를 넣으면 진짜 문장의 시작값 이어야 해서 처리 안함) 숫자로된 4자리와 이어진 숫자4자리의 문장의 경우 뒤의 숫자4자리를 ****으로 변경
tempStr = tempStr.replaceAll("(M[0-9]{4})([0-9]{4})", "$1****");

 

ex> TJ 0012345 T* 0012***
tempStr = "여권번호 TJ 0012345 입니다.";
- 영문2글자로 시작하고 가운데 공백 숫자7자리인 정보를 영문+영문 숫자4+숫자3 기준으로 나눠서 2,4마스킹
tempStr = tempStr.replaceAll("([A-Z])([A-Z])\\s([0-9]{4})([0-9]{3})", "$1* $3***");

 

6. 운전면허

ex> 서울12-123456-78 → 서울1*-1234**-*8
//한글2자리+숫자1자리+숫자1자리-숫자4자리+숫자2자리-숫자1자리+숫자1자리 에 맞는 정보를 치환 [0-9]는 너무 길어 지니까 \\d 로 사용
tempStr = tempStr.replaceAll("([가-힣]{2})(\\d{1})(\\d{1})-(\\d{4})(\\d{2})-(\\d{1})(\\d{1})", "$1$2*-$4**-*$7");

 

7. 카드번호 

ex> 4000-1234-5678-0000 -> 40000-****-****-0000

tempStr.replaceAll("(\\d{4})-(\\d{4})-(\\d{4})-(\\d{4})", "$1-****-****-$4")

=> 4글자 기준 형식에 맞춰서 가운데 부분만 ****으로 변경 $1, $4의 경우 앞의 정규식 () 기준 문장의 순서를 의미 합니다. ()가 4개로 구성 되어 있어 $1, $2, $3, $4로 정의 할 수 있습니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n

 

RegExp.$1-$9 - JavaScript | MDN

비표준 $1, $2, $3, $4, $5, $6, $7, $8, $9 속성들은 정적이며, 괄호로 묶인 하위 문자열 match들을 포함하는 정규 표현식의 읽기 전용 속성들입니다.

developer.mozilla.org

마스킹 방식의 경우 단어를 쪼개서 조합하는 방식으로 처리 하게 되면서 비표준(javascript기준 지원 브라우저 확인 필요) 방식을 사용합니다. 마스킹 처리를 하지 않고 체크만 하는 경우에는 더 간단하게 패턴을 정의 할 수 있습니다.

이 부분은 추가 작업 예정 입니다.

반응형

'JAVA' 카테고리의 다른 글

java custom validation 추가  (0) 2022.02.14
@Retention 간략 설명  (0) 2022.02.14
엑셀 날짜(date) 형식 컬럼 처리  (0) 2021.11.29
Jwts 에러 발생시 확인 사항  (0) 2021.11.25
Base64 한글 인코딩(한글깨짐)  (0) 2021.11.22
Posted by 질주하는구
,