Blog

[Spring][JPA]42 UUID?

Category
Author
Tags
PinOnMain
1 more property
UUID 한줄 정리
네트워크 상에서 고유성이 보장되는 id를 만들기 위한 표준 규약
UUID는 Universally Unique IDentifier의 약어이고 범용 고유 식별자라고 한다.
주로 분산 컴퓨팅 환경에서 사용되는 식별자이다. 중앙관리시스템이 있는 환경이라면 각 세션에 일련번호를 부여해줌으로써 유일성을 보장할 수 있겠지만 중앙에서 관리되지 않는 분산 환경이라면 개별 시스템이 id를 발급하더라도 유일성이 보장되어야만 할 것이다. 이를 위해 탄생한 것이 범용고유식별자 UUID이다.
RFC 4122에 명시되어 있다.
UUID는 128비트의 숫자이며, 32자리의 16진수로 표현된다.
8자리-4자리-4자리-4자리-12자리 패턴으로 하이픈을 집어 넣어 5개의 그룹으로 구분한다.
이름 길이 (바이트) 길이 (16진수 숫자) 내용 time_low 4 8 시간의 low 32비트를 부여하는 정수 time_mid 2 4 시간의 middle 16비트를 부여하는 정수 time_hi_and_version 2 4 최상위 비트에서 4비트 "version", 그리고 시간의 high 12비트 clock_seq_hi_and_res clock_seq_low 2 4 최상위 비트에서 1-3비트, 그리고 13-15비트 클럭 시퀀스 node 6 12 48비트 노드 id
UUID 종류
종류UUID버전은 1,3,4,5가 있다. 이중 가장 많이 쓰이는 버전은 1버전과 4버전이다.
1버전같은 경우, 타임스탬프를 기준으로 생성된다. (호스트 ID, 시퀀스 번호 및 현재 시각으로 UUID 발급)
4버전는 랜덤 생성 (무작위 UUID 생성) 이라고 생각하면 된다.
또한 3버전 MD5 (이름공간 식별자 [UUID] 및 이름 [문자열]의 해시기반), 5버전 SHA-1 (이름공간 식별자 [UUID] 및 이름 [문자열]의 해시기반)해쉬를 이용해 생성하는 방식이 있다.
※주로 1버전 보다는 4버전을 많이 사용한다.
애플에서도 UUID를 생성할때 4버전을 사용한다고 한다.
이는 1버전 같은 경우엔 호스트ID를 가지고 발급이 이루어 지기 때문에 어떻게 해서든 유출 가능성이 있어 랜덤생성으로 UUID를 발급받아 보안성을 높은것으로 추측이 된다.
1.
JAVA에서의 UUID 사용나는 JAVA개발자 이기 때문에 JAVA에서의 UUID 4버전을 이용하여 생성해 볼 것 이다.
2.
UUID 4버전을 사용하기 위해 java.util.UUID (UUID 3버전, 4버전 지원) API를 사용할 것이다.
3버전을 사용하기 위해서는 nameUUIDFromBytes 사용
4버전을 사용하기 위해서는 randomUUID 사용
Developer : Min-Kyu Matthew
Context : UUID.v4 생성 및 대시제거 후 Return./
public String uuidRandomCreate() {
String resultUuid = ""; try { UUID uuidTemp = UUID.randomUUID(); resultUuid = uuidTemp.toString().replaceAll("-", ""); }catch (Exception e) { // TODO: handle exception logger.error("uuidRandomCreate [error][e] ---> " + e); logger.error("uuidRandomCreate [error][e.getMessage()] ---> " + e.getMessage()); } return resultUuid;
Java
복사