UUID 생성기
컴퓨터 시스템에서 정보를 식별하는 데 쓰이는 128비트 숫자 UUID를 생성합니다.
NIL, v1, v3, v4, v5 형식의 UUID를 1개에서 50개까지 한 번에 만듭니다. 데이터베이스 키나 임시 식별자로 쓸 값을 빠르게 얻을 때 씁니다.
사용 순서
- UUID 버전을 고릅니다. 무작위 값이면 v4, 같은 이름에서 항상 같은 값이 필요하면 v5를 씁니다.
- v3나 v5를 골랐다면 네임스페이스(DNS, URL, OID, X500 중 하나 또는 직접 입력)와 이름을 넣습니다.
- 수량 칸에 1에서 50 사이 숫자를 넣습니다.
- Refresh로 다시 만들고, Copy로 결과를 복사합니다.
예시
버전 v5, 네임스페이스 DNS, 이름 python.org를 넣으면 886313e1-3b8a-5372-9b90-0c9aee199e5d가 나옵니다. 같은 입력을 다시 넣어도 같은 값이 나옵니다.
한계
v1의 노드 부분은 실제 MAC 주소가 아니라 무작위 값입니다. v3와 v5는 네임스페이스와 이름이 같으면 항상 같은 값을 냅니다. 네임스페이스 칸은 UUID 형식을 검사하지만 이름 칸은 검사하지 않습니다.
보안 주의
v1 값의 노드 부분은 Math.random으로 만들어지고, 생성 시각이 값에 그대로 들어갑니다. 추측되면 안 되는 자리에는 v4를 쓰세요. v4는 브라우저 암호학 난수를 쓰는 uuid 라이브러리로 만들어집니다.
배경 지식
UUID는 128비트 값을 8-4-4-4-12 자리 16진수로 적은 식별자입니다. 중앙 서버와 통신하지 않고 만들어도 같은 값이 나올 확률이 극히 낮아, 여러 시스템이 독립적으로 키를 만들어야 할 때 씁니다. 세 번째 묶음의 첫 자리는 버전 번호이고, 네 번째 묶음의 첫 자리는 변형 정보입니다. 이 두 자리를 보면 어떤 방식으로 만든 값인지 대략 알 수 있습니다.
v1은 시각과 노드 값으로, v3와 v5는 네임스페이스와 이름을 해시해 만듭니다. v3는 MD5, v5는 SHA-1을 씁니다. 입력이 같으면 항상 같은 값이 나오므로 외부 시스템이 만든 식별자를 재현할 때 유용합니다. 반면 v4는 순수 난수라 순서 정보가 없는 대신 추측하기 어렵습니다. 목적에 따라 이 세 가지 특성을 나눠 고르는 것이 UUID를 제대로 쓰는 출발점입니다.
자주 묻는 질문
UUID가 완전히 겹치지 않는다고 보장할 수 있나요?
보장할 수는 없고 실무에서 충돌을 걱정하지 않을 만큼 확률이 낮다고 봅니다. 다만 v1처럼 생성 노드가 겹치거나 난수 품질이 낮으면 확률이 올라가므로 생성 방식을 함께 고려해야 합니다.
v4와 v5 중 무엇을 써야 하나요?
무작위 식별자가 필요하면 v4가 맞습니다. 같은 입력에서 같은 값을 다시 얻어야 한다면 v5를 쓰세요. 예를 들어 이메일 주소에서 파생한 식별자는 v5가 편합니다.
NIL UUID는 언제 쓰나요?
모든 자리가 0인 값으로, 아직 값이 정해지지 않았다는 빈 자리 표시로 씁니다. 실제 레코드의 고유 키로 저장하면 여러 행이 같은 키를 갖게 되니 주의하세요.