일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바스크립트
- array
- JavaScript
- 스프링
- JSX
- 모바일게임
- 자바
- forEach
- set
- JSTL
- 원펀맨
- spring
- Oracle
- JS
- html
- 리액트
- url 변환
- table
- 개발
- 이름 마스킹
- 오라클
- Java
- url 치환
- 배열
- SQL
- 원펀맨: 최강의 남자
- 형변환
- jQuery
- React
- 맛집
Archives
- Today
- Total
특별한 일상
[java] 휴대폰 번호, 계좌번호, 이름 마스킹(masking) 본문
반응형
안녕하세요. 소다맛사탕 입니다.
(2021/12/28 코드 수정)
휴대폰번호, 계좌번호, 또는 이름은 인터넷에서 중요한 개인정보 인데요.
웹을 구현할때 이 개인정보를 마스킹해야 보안 위협에서 벗어날 수 있습니다.
그래서 휴대폰 번호, 계좌번호, 이름에 대한 마스킹 처리 방법을 간단하게 적어봤습니다.
1. 휴대폰 번호 마스킹(phone number masking)
// 번호 설정
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
번호를 하드코딩 했지만, DB나 파라미터로 들어올 경우 null 이나 공백이 존재할 수 있기에 조건문을 써준다.
앞자리 010, 뒷번호를 제외한 가운데 번호를 마스킹(*).
2. 계좌번호 마스킹(account number masking)
// 계좌번호 설정(은행마다 자릿수 틀림. 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
휴대폰 번호와 마찬가지로 DB나 파라미터를 통해서 값이 들어올 경우를 대비해 조건문을 썼다.
계좌번호의 앞 3자리, 맨 뒤 3자리를 제외한 모든 부분을 마스킹(*)
3. 이름 마스킹(name masking)
// 이름 설정
String name = "가나다";
// null 또는 빈값 체크
if(name != null && !"".equals(name)){
// 이름 가운데 글자 마스킹
String middleMask = "";
// 이름이 외자 또는 4자 이상인 경우 분기
if(name.length() > 2){
middleMask = name.substring(1, name.length()-1);
} else {
middleMask = name.substring(1, name.length());
}
// 마스킹 변수 선언(*)
String masking = "";
// 가운데 글자 마스킹 하기위한 증감값
for(int i = 0; i < middleMask.length(); i++){
masking += "*";
}
// 선언 방식(20211208 수정)
// 1. 각각 분기
// 이름이 외자 또는 4자 이상인 경우 분기
if(name.length() > 2){
name = name.substring(0,1)
+ middleMask.replace(middleMask, masking)
+ name.substring(name.length()-1, name.length());
} else {
name = name.substring(0,1)
+ middleMask.replace(middleMask, masking);
}
// 2. 분기, 코드 낭비 없이. 변수만 재선언
/*name = name.replace(middleMask, masking);*/
}
System.out.println("이름 마스킹 : " + name);
>> 이름 마스킹 : 가*다
마찬가지로 DB나 파라미터로 값이 들어올 경우를 대비한 조건문을 포함합니다.
이름의 경우 외자나 4자 이상이 있을수 있으므로 조건을 분기해서 표현합니다.
※ 외국인 이름은 포함 안됩니다. 오로지 한국 이름만..
래퍼런스해서 본인의 방식으로 다시 구현해 보세요~
'IT•개발 끄적 > Java' 카테고리의 다른 글
[java] JDK 환경변수 설정(java 환경변수 설정) (0) | 2021.04.11 |
---|---|
[java] JDK 설치하기(자바 개발도구 설치, JDK 1.8 =JDK 8.0) (0) | 2021.04.11 |
[java] String, StringBuffer, StringBuilder 차이점과 장단점 (0) | 2021.04.10 |
[java] 다이아몬드 별찍기 (0) | 2021.04.08 |
[java] 정수를 2진수로 변환 (0) | 2021.04.07 |
Comments