결정적인 UUID v5 생성하기
버전 5 UUID는 네임스페이스 UUID와 이름에서 SHA-1로 도출됩니다. 같은 네임스페이스와 같은 이름을 해시하면 누구나 정확히 같은 UUID를 얻으므로 ID를 저장하지 않고 다시 계산할 수 있습니다.
계산 예시
- 네임스페이스 (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- 이름
- example.com
- 결과
- cfbff0d1-9375-5685-968c-48ce8b15ae17
- 네임스페이스 (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- 이름
- Example.com
- 결과
- a1feb884-07f5-5a14-8edb-cb659a7fbadc
작동 방식
- 네임스페이스의 16바이트를 이름의 UTF-8 바이트와 이어 붙여 SHA-1로 해시합니다. 다이제스트의 앞 16바이트에 버전(5)과 변형 비트를 설정하면 UUID가 됩니다.
- RFC 9562는 DNS 이름, URL, ISO OID, X.500 고유 이름을 위한 네임스페이스를 미리 정의합니다. 직접 만든 UUID도 비공개 네임스페이스로 사용할 수 있습니다.
- 이름은 바이트 단위로 비교됩니다. 대소문자, 공백, 끝의 슬래시만 달라도 결과가 바뀌므로 먼저 이름을 정규화하세요. 결과를 예측할 수 있으므로 UUID v5를 비밀 값으로 쓰면 안 됩니다.
한 번에 1-100개의 UUID 생성
DNS 네임스페이스: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (기본값)
해시할 이름 (예: 도메인 이름, 이메일 등)
UUID 정보
UUID v1: 타임스탬프와 UUID를 생성하는 컴퓨터의 MAC 주소를 포함하는 시간 기반 UUID. UUID가 생성된 시간을 알아야 할 때 유용합니다.
UUID v4: 무작위로 생성된 UUID. 가장 일반적으로 사용되는 버전이며 정보 유출을 최소화하면서 우수한 고유성을 제공합니다.
UUID v5: SHA-1 해싱을 사용하는 이름 기반 UUID. 동일한 네임스페이스와 이름이 주어지면 항상 동일한 UUID를 얻습니다. 결정론적 UUID 생성에 유용합니다.