2023-11-23 작성

Java에서 UUID를 이용해서 난수 생성하기 (feat. SecureRandom)

UUID

UUID (Universally Unique Identifier) 는 말그대로 범용 고유 식별자로 사용할 수 있는 ID를 말한다. 보통 다른 값과 중복되지 않는 유니크한 값을 생성해야 할 때 사용하는데, 예를 들어 세션 식별자, 쿠키 값, 무작위 데이터베이스 키 등에 사용하곤 한다.

UUID를 통해 생성된 난수는 중복될 수도 있다. 하지만 중복되는 확률이 굉장히 희박해서 사실상 중복이 아니라고 볼 수 있는 셈이다. UUID를 활용한 예제를 보자.

import java.util.UUID;

public class Sample {
	public static void main(String[] args) {
		UUID uuid = UUID.randomUUID();
		System.out.println(uuid.toString());
	}
}

출력 결과는 아래와 같다. 물론 실행할때마다 값이 계속 변경된다.

2b946c7f-abd1-4aef-a440-5d7670e4db75

UUID 형식을 살펴보면 하이픈(-) 4개와 16진수 문자열 32개가 합쳐져서 총 36자리로 출력된다. 만약 UUID에서 하이픈도 제거하고 싶다면 replaceAll로 하이픈으로 제거해서 총 32자리의 난수가 출력된다.

String uuid = new String(UUID.randomUUID.toString().replaceAll("\\-", ""));

SecureRandom

uuid.randomUUID() 기능과 비슷하게 사용할 수 있는 SecureRandom 클래스가 있다. 사실 클래스 내용을 파보면 uuid.randomUUID()는 SecureRandom를 사용하여 구현되어 있음을 알 수 있다.

References