본문 바로가기
Language/Java

[Java] 임시(랜덤) 비밀번호 생성하기 (비밀번호 찾기)

by 나비와꽃기린 2016. 10. 25.

로그인시 비밀번호를 분실하면 비밀번호찾기를 할때 사용되어지는

랜덤 비밀번호 생성 or 임시 비밀번호 발급 을 위한소스이다.


getRandomPassword(숫자)  입력된 숫자 길이만큼 비밀번호가 생성 되어진다.

현재는 10이라는 숫자를 입력해 주었기 때문에

10자리의 임시 비밀번호가 생성된다.



public static void main(String[] args) throws IOException {
  System.out.println(getRamdomPassword(10));
}

public static String getRamdomPassword(int len) {
  char[] charSet = new char[] { '0', '1', '2', '3', '4', '5', '6', '7',
		'8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 
		'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 
		'U', 'V', 'W', 'X', 'Y', 'Z' };

  int idx = 0;
  StringBuffer sb = new StringBuffer();
  
  System.out.println("charSet.length :::: "+charSet.length);
  
  for (int i = 0; i < len; i++) {
	
	  idx = (int) (charSet.length * Math.random()); // 36 * 생성된 난수를  Int로 추출 (소숫점제거)
	  System.out.println("idx :::: "+idx);
	  sb.append(charSet[idx]);
  }

  return sb.toString();
}


charSet에 임시 비밀번호에 생성될 문자들을 나열해 주고

파라미터로 넘어온 숫자열 만큼 for문을 돌린다.


이때, charSet 배열에 입력된 36개의 숫자와 Math.random()을 사용하여 생성되는 난수를 곱한뒤, Integer로 형변환을 시킨다 (소숫점을 제거한다는 의미)


반환된 int값을 charSet배열에 해당되는 값과 매칭하여 결과를 return 해준다.

이때 배열에 값을 넣을때 배열은 index를 0~ 35로 인식하게 된다.


<<OUTPUT>>


charSet.length :::: 36

idx :::: 28

idx :::: 19

idx :::: 22

idx :::: 2

idx :::: 10

idx :::: 20

idx :::: 26

idx :::: 11

idx :::: 3

idx :::: 28

SJM2AKQB3S

댓글0