본문으로 바로가기

UUID 버전 4 생성기

UUIDv4 • 암호학적 무작위 난수
00000000-0000-0000-0000-000000000000
감싸기:

UUID 대량 배치 생성

최대 5,000개
형식 및 구조 설정

준비 완료

No batch active
업계 표준RFC 9562 섹션 5.4 / RFC 4122

UUID 버전 4 기술 사양 (RFC 4122 & RFC 9562)

UUIDv4는 전 세계 소프트웨어에서 가장 널리 사용되는 난수 기반 식별자입니다. 전체 128비트 중 버전(0100) 및 변형(10xx) 비트를 제외한 122비트가 암호학적으로 안전한 난수 엔트로피로 채워집니다.

비트필드 레이아웃 및 바이너리 구조

RFC 표준에 따른 128비트 바이트 세부 구조입니다.

필드 이름비트 범위용도 및 설명
random_hi48비트 (0-47)암호학적으로 안전한 의사 난수 엔트로피.
ver4비트 (48-51)고정 바이너리 값 0100 (버전 4 식별).
random_mid12비트 (52-63)암호학적으로 안전한 의사 난수 엔트로피.
var2비트 (64-65)고정 바이너리 값 10 (RFC 표준 변형).
random_lo62비트 (66-127)암호학적으로 안전한 의사 난수 엔트로피.

장점 및 특징

  • 완벽한 개인정보 보호: 타임스탬프, MAC 주소, 호스트 정보를 일체 노출하지 않음.
  • 모든 현대 프로그래밍 언어 표준 라이브러리 및 데이터베이스 엔진에서 기본 지원.
  • 예측 불가능한 난수 구조로 IDOR 열거 공격에 대해 안전함.
!

고려사항 및 제한점

  • 무작위 삽입으로 인해 대규모 관계형 데이터베이스 B-Tree 인덱스 성능이 저하됨.
  • 별도의 created_at 컬럼 없이는 시간순 정렬이 불가능함.

권장 사용처

  • API 키, 인증 세션 토큰, 비밀번호 재설정 링크, OAuth 식별자.
  • 외부에 노출되는 불투명 사용자 고유 ID.
  • Redis, Memcached 등 비인덱싱 분산 캐시 키.

지양해야 할 사용처

  • 쓰기 작업이 빈번한 대규모 데이터베이스 B-Tree 클러스터형 기본 키(UUIDv7 권장).
  • 자연스러운 사전순 정렬이 필요한 레코드.

코드 구현 예제

Native Web CryptoJavaScript / TypeScript
// Modern browsers and Node.js 14.17+
const id = crypto.randomUUID();
console.log(id); // e.g. "c9a646d3-9c61-4cc9-bc0c-930438cf38cf"
Python Standard LibraryPython
import uuid

id = uuid.uuid4()
print(id) # e.g. "f47ac10b-58cc-4372-a567-0e02b2c3d479"
Go (google/uuid)Go
package main

import (
  "fmt"
  "github.com/google/uuid"
)

func main() {
  id := uuid.New()
  fmt.Println(id.String())
}

자주 묻는 질문

생성 가능한 UUIDv4의 총 경우의 수는 몇 개인가요?
122비트의 난수 엔트로피로 약 5.3 × 10³⁶개의 고유 조합이 존재합니다. 매초 10억 개씩 85년 동안 쉬지 않고 생성해도 중복 확률은 10억 분의 1 이하입니다.
이 생성기는 Math.random()을 사용하나요?
아닙니다. 운영체제 커널의 암호학적 보안 난수 생성기(CSPRNG)에서 직접 엔트로피를 가져오는 Web Crypto API(crypto.getRandomValues)만을 사용합니다.