2020년 주민 개편전 주민등록번호 유효성 체크
//주민번호 유효성 체크
//13자리 다 받아야 됨 (2020년 이후 주민번호는 적용 안됨)
public static boolean juminValidityCheck(String jumin) {
String[] arr = jumin.split("");
int[] intArr = {2,3,4,5,6,7,8,9,2,3,4,5};
for(int i=0; i<arr.length-1; i++)
arr[i] = String.valueOf(Integer.parseInt(arr[i]) * intArr[i]);
int lastNum = Integer.parseInt(arr[arr.length-1]);
int sum = 0;
for(int i=0; i<arr.length-1; i++)
sum += Integer.parseInt(arr[i]);
sum = sum % 11;
sum = 11 - sum;
if(sum > 9)
sum = sum % 10;
return sum == lastNum;
}
주민번호 생성기
public static String getSSN() {
Random rand = new Random();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(rand.nextLong());
String s1 = new SimpleDateFormat("yyMMdd").format(cal.getTime());
String s2 = null;
while(s2 == null || s2.length() < 6) {
s2 = Integer.toString(rand.nextInt(299999));
}
int sum = 0;
for (int i = 0; i < s1.length(); i++) {
sum += Integer.parseInt(String.valueOf(s1.charAt(i))) * (i + 2);
int j = i < 2 ? i + 8 : i;
sum += Integer.parseInt(String.valueOf(s2.charAt(i))) * j;
}
int bit = 11 - (sum % 11);
return s1 + "-" + s2 + (bit == 10 ? 0 : bit);
}
현재 많이 쓰는 정규식
String regex = "\d{6} \- [1-4]\d{6}";
boolean result = Pattern.matches( regex , jumin );
return result;
'Java' 카테고리의 다른 글
[Java] 클라이언트 ip 주소가져오기 (0) | 2023.12.01 |
---|---|
[Java] 중첩 클래스 (0) | 2023.11.01 |
[Java]SHA-256 (0) | 2023.10.12 |
[Java] try-with-resources (0) | 2023.09.13 |
[Java] 만 나이 계산용 (0) | 2023.08.30 |