새소식

Java/Spring

Spring - 랜덤 인증번호 생성기

  • -
오늘의 명언

프로젝트를 진행하던 중 흔히들 사용하는 랜덤 인증번호 생성 프로세스가 필요해 작성해보았다.
생성되는 인증번호는 영어 소문자와 숫자의 조합이다. (인증번호에 대소문자 구분하는 것 만큼 짜증나는 것이 없기에...)


import java.security.SecureRandom; /** * 랜덤 인증번호 생성 클래스 */ public class RandomAuthCode { // 인증 코드에 사용될 문자들 private static final String CHARACTERS = "abcdefghijklmnopqrstuvwxyz0123456789"; // 인증 코드의 길이 (6자리) private static final int CODE_LENGTH = 6; // 보안 강화를 위한 SecureRandom 사용 private static final SecureRandom RANDOM = new SecureRandom(); /** * 인증 코드를 생성하는 메소드 * * @return 생성된 인증 코드 (Ex. wu2mf9) */ public static String generate() { StringBuilder code = new StringBuilder(CODE_LENGTH); // 지정된 길이만큼 랜덤 문자를 선택하여 인증 코드 생성 for (int i = 0; i < CODE_LENGTH; i++) { // CHARACTERS에서 랜덤하게 문자를 선택하여 코드에 추가 code.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length()))); } return code.toString(); // 생성된 인증 코드를 문자열로 반환 } }

@AllArgsConstructor public class ExamService { private final RandomAuthCode randomAuthCode; public void example(){ String authCode = randomAuthCode.generate(); } }

  • 목적: 일반적인 용도의 난수 생성
  • 사용 사례: 시뮬레이션, 게임, 비과학적 계산 등 보안이 중요하지 않은 경우
  • 알고리즘: 선형 합동 생성기(Linear Congruential Generator, LCG) - 빠르고 메모리 효율적이지만, 예측 가능성이 높다
  • 목적: 보안이 중요한 용도의 난수 생성
  • 사용 사례: 암호화 키, 보안 토큰, 패스워드 생성 등 보안이 중요한 경우
  • 알고리즘: 암호화 강도(cryptographically strong) 난수 생성기 - 운영체제에 따라 다른 알고리즘을 사용할 수 있으며, 기본적으로 매우 예측하기 어렵도록 설계되어 있음

 

Spring - 랜덤 닉네임 생성기

개요프로젝트를 진행하던 중 랜덤으로 닉네임을 생성해주는 프로세스가 필요해 작성해보았다.코드import lombok.AllArgsConstructor;import org.springframework.stereotype.Component;import java.text.MessageFormat;import java.

dev-kimchi.tistory.com

 

반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.