UUID 디코더 및 검증기

UUID를 디코딩하고 검증하여 버전, 타임스탬프 및 메타데이터를 추출합니다

다음 예시를 시도해보세요:

UUID 디코딩이란?

UUID 디코딩 UUID를 분석하여 다음에 대한 정보를 추출하는 과정입니다:

  • Version: 위치 48-51의 4비트에 기반한 UUID 버전 (1-8)
  • Variant: 비트 64-65에 기반한 UUID 변형 (보통 RFC 4122)
  • Components: 버전에 따른 타임스탬프, 노드 ID 또는 기타 데이터 추출
  • 생성 시간: 시간 기반 UUID (v1, v6, v7)용

Example: 123e4567-e89b-12d3-a456-426614174000 2018-10-03 09:45:32 UTC에 생성된 버전 1 UUID입니다.

UUID 구조 개요

FormatDescription
8-4-4-4-12하이픈으로 구분된 32자리 16진수 숫자
버전 비트비트 48-51 (13번째 숫자)
변형 비트비트 64-65 (17번째 숫자)

버전 번호는 세 번째 그룹의 첫 번째 16진수 숫자로 나타납니다 (예: 123e4567-e89b-12d3-a456-426614174000 버전 1의 경우).

UUID 버전에 따른 디코딩

Version디코딩 가능한 내용
UUID v1
  • 타임스탬프 (100ns 정밀도, 1582년 10월 15일부터)
  • MAC 주소 (무작위가 아닌 경우)
  • 충돌 방지를 위한 클럭 시퀀스
UUID v3/v5
  • 원본 입력값 디코딩 불가
  • 알려진 입력값에서 생성 여부 확인 가능
  • v3 (MD5)와 v5 (SHA-1) 구분 가능
UUID v4
  • 무작위 데이터만 포함
  • 추출 가능한 정보 없음
  • 유효한 v4 UUID임을 확인 가능
UUID v6
  • 타임스탬프 (100ns 정밀도, 1582년 10월 15일부터)
  • MAC 주소 (무작위가 아닌 경우)
  • 충돌 방지를 위한 클럭 시퀀스
UUID v7
  • 유닉스 타임스탬프 (밀리초 정밀도)
  • 무작위 구성 요소 (디코딩 불가)
ULID
  • 유닉스 타임스탬프 (밀리초 정밀도)
  • 무작위 구성 요소 (디코딩 불가)

UUID에서 타임스탬프 추출

UUID 유형시간 추출 방법Epoch
UUID v1비트 0-31, 32-47, 48-59를 결합하여 타임스탬프 구성 요소 재정렬1582년 10월 15일
UUID v6비트 0-59 추출 (이미 올바른 순서)1582년 10월 15일
UUID v7비트 0-47 추출 (유닉스 밀리초)1970년 1월 1일
ULID처음 10자리 Base32 문자를 디코딩하여 48비트 유닉스 밀리초 획득1970년 1월 1일

UUID 유효성 검사 규칙

  • 형식 검사: 하이픈으로 구분된 8-4-4-4-12 16진수 숫자
  • 버전 검사: 13번째 문자는 1-8이어야 함
  • 변형 검사: 17번째 문자는 8, 9, A, 또는 B 여야 합니다 (RFC 4122 기준)

기본 UUID 유효성 검사용 정규 표현식:

^[0-9a-f]8-[0-9a-f]4-[1-8][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$

실용적 응용

  • 포렌식 분석: ID 생성 시점 결정
  • Debugging: ID 타임스탬프를 통한 시스템 동작 추적
  • Auditing: 시간 순서 무결성 검증
  • 보안 분석: 위조되거나 조작된 ID 감지
  • 데이터 복구: 시간적 관계 재구성
  • 시스템 마이그레이션: 레거시 UUID 구현 세부사항 이해

MAC 주소 추출 (v1/v6)

UUID v1 및 v6의 경우, 생성 시 무작위화되지 않았다면 노드 식별자(MAC 주소)를 추출할 수 있습니다:

  1. UUID에서 마지막 12자리 16진수 (48비트) 추출
  2. XX:XX:XX:XX:XX:XX 형식의 콜론 구분
  3. 멀티캐스트 비트를 검사하여 MAC 주소가 실제인지 무작위인지 확인

첫 번째 바이트에 0x01 비트가 설정되어 있으면 실제 MAC 주소가 아닌 무작위 노드 ID일 가능성이 높습니다.

자주 묻는 질문

UUID v4가 생성된 정확한 시간을 알 수 있나요?

아니요. UUID v4는 순수 무작위이며 타임스탬프 정보가 없습니다. UUID v4 값으로 생성 시간을 알 수 없습니다.

시간 기반 UUID의 타임스탬프 정확도는?

UUID v1/v6 타임스탬프는 100나노초 정밀도이며, UUID v7과 ULID는 밀리초 정밀도입니다. 다만 실제 시스템 시계 정확도는 다를 수 있습니다.

UUID 버전 간 변환이 가능한가요?

아니요, 동일한 식별자 값을 유지하면서 버전 간 직접 변환은 불가능합니다. 각 버전은 근본적으로 다른 구조를 가집니다.

UUID v1을 생성한 컴퓨터를 식별할 수 있나요?

노드 ID가 무작위화되지 않았다면 UUID v1에 생성 시스템의 MAC 주소가 포함될 수 있습니다. 하지만 많은 최신 구현체는 개인정보 보호를 위해 이를 무작위화합니다.

UUID가 유효한지 어떻게 알 수 있나요?

형식 확인 (8-4-4-4-12 16진수 숫자), 버전 숫자 확인 (13번째 문자는 1-8), 변형 비트 확인 (RFC 4122 UUID의 경우 17번째 문자는 8, 9, A, 또는 B)

Resources