[java] 복잡도를 만족하는 랜덤 패스워드 생성
2011. 12. 26. 23:52 |
프로그래밍/기타
public class Password { public static void main(String[] args) { int passLength = 10; // 패스워드 길이 int passNumber = 20; // 생성할 패스워드 개수 int[] password = new int[passLength]; for (int i = 0; i < passNumber; i++) { int number = 0; int special = 0; int lower = 0; int upper = 0; for (int j = 0; j < password.length; j++) { int ranNum; ranNum = (int) ((Math.random() * 94) + 33); password[j] = ranNum; if (ranNum < 48) { special = 1; } else if (ranNum < 58) { number = 1; } else if (ranNum < 65) { special = 1; } else if (ranNum < 91) { upper = 1; } else if (ranNum < 97) { special = 1; } else if (ranNum < 123) { lower = 1; } else { special = 1; } } if (number + special + lower + upper >= 3) { for (int n : password) { System.out.print((char) n); } System.out.println(); } else { i--; } } } }
지난번에 올렸던 글에 댓글이 달려가지고... 퇴근하고 집에 와서 호기심에 한번 만들어 봤습니다. 비겁한 변명이지만 저는 개발자도 아니고 자바는 신입사원 교육 때 2주간 기초교육 받아본게 전부라서... 코드가 매우 허접합니다. 그래도 제가 이런 허접한 코드를 짜서 올리는 이유는, 개발자 분들의 황금같은 조언을 얻고자...
제가 이렇게 짜면서 궁금했던 부분은
1. 랜덤하게 뽑은 숫자가 ASCII 코드표의 특수문자, 숫자, 대문자, 소문자 중 어디에 속하는지를 검사하는 좀 더 세련된 방법이 없을까?
2. 최소 3가지 이상 종류가 조합되었는지 여부를 판단하는 좀 더 세련된 방법이 없을까?
아무튼 허접한 코드 봐주셔서 감사하고, 더 좋은 방법이 있다면 언제든지 조언해주시면 귀담아 듣겠습니다. 감사합니다.
'프로그래밍 > 기타' 카테고리의 다른 글
[Python3] a^3 + b^3 = c^3 + d^3 을 만족하는 자연수 1000 이하의 조합 (0) | 2018.05.24 |
---|---|
[Python] CentOS 리눅스 Python 3 설치 (1) | 2017.05.07 |
[Python] 자연수 n 이하의 소수 구하기 (1) | 2017.05.07 |
[Python] 로또 번호 생성 (4) | 2017.05.07 |
[java] 랜덤 패스워드 생성 (19) | 2011.05.21 |
VisualSVN 서버로 Subversion 서버 구동하기 (9) | 2011.03.09 |
[Java] 로또 번호 생성 (25) | 2011.02.12 |
마우스 우클릭으로 .java 컴파일과 동시에 실행하기 (16) | 2010.12.22 |
최근에 달린 댓글 최근에 달린 댓글