Jay's Developer Note

[JAVA] 임시 비밀번호 생성(feat. RandomStringUtils) 본문

JAVA

[JAVA] 임시 비밀번호 생성(feat. RandomStringUtils)

Jay(J) 2022. 5. 25. 19:55
728x90

임시 비밀번호 생성

라이브러리를 이용해 임시 비밀번호를 생성했다.

라이브러리는 apache 에서 제공하는 Apache Common Lang 이다.

 

라이브러리 추가

Gradle

implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'

 

Maven

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

 

작성일 기준 최신 버전이 3.12.0 이었다.

더 자세한 내용과 다른 버전을 사용하려면 여기 로 가서 확인하면 된다.

 
사용방법
// 완전 랜덤으로 이뤄진 8개 문자열 반환
RandomStringUtils.random(8);
// 랜덤 알파벳으로만 이뤄진 8개 문자열 반환
RandomStringUtils.randomAlphabetic(8);
// 랜덤 숫자로만 이뤄진 8개 문자열 반환
RandomStringUtils.randomNumeric(8);
// 랜덤 알파벳+숫자로만 이뤄진 8개 문자열 반환
RandomStringUtils.randomAlphanumeric(8);
// 랜덤 Ascii 값으로만 이뤄진 8개 문자열 반환
RandomStringUtils.randomAscii(8);
실행결과
random             : 뽳𬘣𞠔𢺃賗
randomAlphabetic   : BQDvWhjK
randomNumeric      : 63726331
randomAlphanumeric : ncmI2fVL
randomAscii        : 'P~sJQ2R

 

추가내용

random() 메소드를 제외한 각 메소드들은 1개의 오버로딩을 가지고 있다.

// minLengthInclusive : 포함할 최소 길이
// maxLengthExclusive : 제외할 최대 길이
RandomStringUtils.randomAlphabetic(int minLengthInclusive, int maxLengthExclusive);
RandomStringUtils.randomNumeric(int minLengthInclusive, int maxLengthExclusive);
RandomStringUtils.randomAlphanumeric(int minLengthInclusive, int maxLengthExclusive);
RandomStringUtils.randomAscii(int minLengthInclusive, int maxLengthExclusive);

// 최소 1개 최대 (8-1)개의 랜덤 문자열 생성
RandomStringUtils.randomAlphabetic(1, 8);
RandomStringUtils.randomNumeric(1, 8);
RandomStringUtils.randomAlphanumeric(1, 8);
RandomStringUtils.randomAscii(1, 8);
실행결과
randomAlphabetic   : Nz
randomNumeric      : 0908
randomAlphanumeric : v
randomAscii        : 2

 

random() 메소드는 오버로딩이 여러 개가 있다.

// count 는 최대 문자열 길이
// letters = true > 랜덤 문자열에 글자 포함 여부
// numbers = true > 랜덤 문자열에 숫자 포함 여부
random(int count, boolean letters, boolean numbers);

// count : 최대 문자열 길이
// start : 랜덤으로 생성할 문자열 시작 위치(Ascii 값)
// end : 랜덤으로 생성할 문자열 종료 위치(Ascii 값) ※ 포함 안 함
// letters = true > 랜덤 문자열에 글자 포함 여부
// numbers = true > 랜덤 문자열에 숫자 포함 여부
random(int count, int start, int end, boolean letters, boolean numbers);

// count : 최대 문자열 길이
// start : 랜덤으로 생성할 문자열 시작 위치(Ascii 값)
// end : 랜덤으로 생성할 문자열 종료 위치(Ascii 값) ※ 포함 안 함
// letters = true > 랜덤 문자열에 글자 포함 여부
// numbers = true > 랜덤 문자열에 숫자 포함 여부
// chars : 랜덤 문자열 생성 시 기준 문자 배열
random(int count, int start, int end, boolean letters, boolean numbers, char... chars);

// count : 최대 문자열 길이
// start : 랜덤으로 생성할 문자열 시작 위치(Ascii 값)
// end : 랜덤으로 생성할 문자열 종료 위치(Ascii 값) ※ 포함 안 함
// letters = true > 랜덤 문자열에 글자 포함 여부
// numbers = true > 랜덤 문자열에 숫자 포함 여부
// chars : 랜덤 문자열 생성 시 기준 문자 배열
// random : Random 함수
random(int count, int start, int end, boolean letters, boolean numbers, char[] chars, Random random);

// count : 최대 문자열 길이
// chars : 랜덤 문자열 생성 시 기준 문자열
random(int count, @Nullable String chars);

// count : 최대 문자열 길이
// chars : 랜덤 문자열 생성 시 기준 문자 배열
random(int count, @Nullable char... chars);
 

유의해야 할 점은 startendAscii 값이라는 것이다.

그래서 letters 가 true 이면 end 가 최소 A 의 Ascii 값인 65 보다 큰 값이어야 한다.

그리고 numbers 가 true 이면 end 가 최소 0의 Ascii 값인 48 보다 큰 값이어야 한다.

 

표현 : Ascii 값 > [0 : 48 / 9 : 57], [A : 65 / Z : 90], [a : 97 / z : 122]

 

Parameter end (4) must be greater then (48) for generating digits or greater then (65) for generating letters.

 

그렇지 않으면 위와 같은 에러를 만나게 된다.

728x90

'JAVA' 카테고리의 다른 글

[JAVA] 임시 비밀번호 생성 직접 구현해보기  (0) 2022.05.25
[JAVA] Class - 5(상속)  (0) 2022.04.02
[JAVA] 캡슐화 & 은닉화  (0) 2022.03.16
[JAVA] Class - 4(메소드)  (0) 2022.03.13
[JAVA] Class - 3(멤버 변수)  (0) 2022.03.11