목차
- 자바 소스 코드 컴파일 명령 javac 예제 이전 포스팅
- 자바 문자열 타입 변수 선언 및 활용 예제 이전 포스팅
- 자바 SecureRandom 활용 랜덤 값 생성 예제 이전 포스팅
- 자바 소문자 랜덤 문자열 생성 예제(random, ascii code)
- 자바 소문자, 대문자, 특수문자 섞인 랜덤 비밀번호 생성 예제
자바 소스 코드 컴파일 명령 javac 예제 이전 포스팅
안녕하세요. 오늘은 이전 포스팅에서 다룬 SecureRandom의 random 메소드를 활용하여 특정길이의 랜덤 사용자 패스워드를 생성하는 방법에 대해 알아보도록 하겠습니다. 이전 포스팅에서는 10부터 100사이의 랜덤한 정수값을 생성해내는 방법을 학습하였습니다. 우리는 1개의 문자가 아스키 코드라는 바이트 값으로 이루어진 것을 알고있습니다. 따라서 랜덤 정수값의 범위를 문자를 표현할 수 있는 아스키 코드 범위내에서 생성하면 랜덤 문자열을 만들 수 있습니다.
오늘은 이러한 방법을 활용하여 사용자 패스워드를 생성해보겠습니다. 오늘 예제도 자바 소스 코드로 작성 후 컴파일하여 예제 실행결과를 확인해보도록 하겠습니다. 따라서 아직 javac 명령으로 자바 소스 코드 컴파일 방법을 모르신다면 아래 링크를 참고하여 학습해주세요.
2023.08.10 - [Linux] - [Linux/Java] 리눅스 우분투에서 java 컴파일 및 실행 예제(javac)
자바 문자열 타입 변수 선언 및 활용 예제 이전 포스팅
그리고 오늘 예제가 자바에서 문자열을 다루는 주제이다 보니 자바의 String 타입 변수 활용 방법을 모르신다면 아래 포스팅을 참고하여 문자열 관리 방법을 학습해주세요. 문자열과 문자열을 조합하거나 특정 길이만큼 문자열을 잘라내는 방법을 알면 아래 예제를 파악하기 더욱 쉬워집니다.
2023.08.11 - [Java] - [Java/Linux] 문자열의 특정 위치 문자 가져오기 예제(charAt)
자바 SecureRandom 활용 랜덤 값 생성 예제 이전 포스팅
마지막으로 이전 포스팅에서 다룬 SecureRandom 관련 예제를 학습해주세요. 오늘은 문자열을 랜덤으로 만들지만 정수를 랜덤으로 만들어내는 방법을 알아야합니다. 랜덤한 정수값을 만들어 문자를 이루는 아스키코드를 만들어야합니다. 따라서 아직 random 메소드에서 잘 모르신다면 아래를 참고해주세요.
2023.08.17 - [Java] - [Java/Linux] 자바 SecureRandom 특정 범위 정수 랜덤값 생성 예제
자바 소문자 랜덤 문자열 생성 예제(random, ascii code)
아래는 SecureRandom 클래스의 random 메소드를 활용하여 16글자의 소문자의 랜덤한 문자열을 만드는 예제입니다.
import java.security.SecureRandom;
public class Example {
private static final String LOWERCASE = "abcdefghijklmnopqrstuvwxyz";
public static void main(String[] args) {
String generatedPassword = generateRandomPassword();
System.out.println("Generated Password: " + generatedPassword);
}
public static String generateRandomPassword() {
SecureRandom random = new SecureRandom();
StringBuilder passwordBuilder = new StringBuilder();
while (passwordBuilder.length() < 16) {
int randomIndex = random.nextInt(LOWERCASE.length());
char randomChar = LOWERCASE.charAt(randomIndex);
passwordBuilder.append(randomChar);
}
return passwordBuilder.toString();
}
}
자바 소문자, 대문자, 특수문자 섞인 랜덤 비밀번호 생성 예제
아래는 랜덤하게 소문자, 대문자, 특수문자가 섞인 16글자의 사용자 비밀번호 문자열을 만드는 예제입니다.
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
public class Example {
private static final String LOWERCASE = "abcdefghijklmnopqrstuvwxyz";
private static final String UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String SPECIALCHARS = "!@#$%^&*()-_=+[]{}|;:,.<>?";
public static void main(String[] args) {
String generatedPassword = generateRandomPassword();
System.out.println("Generated Password: " + generatedPassword);
}
public static String generateRandomPassword() {
SecureRandom random = new SecureRandom();
List<String> characters = new ArrayList<>();
characters.add(LOWERCASE);
characters.add(UPPERCASE);
characters.add(SPECIALCHARS);
StringBuilder passwordBuilder = new StringBuilder();
while (passwordBuilder.length() < 16) {
String randomCharacterList = characters.get(random.nextInt(characters.size()));
int randomIndex = random.nextInt(randomCharacterList.length());
char randomChar = randomCharacterList.charAt(randomIndex);
passwordBuilder.append(randomChar);
}
return passwordBuilder.toString();
}
}