UUID 생성기

UUID는 36자로 씁니다. 16진수 32자리를 8-4-4-4-12 다섯 묶음으로 나눈 형태입니다.

UUID 분석

문제가 해결됐나요?
Google 선호 출처로 추가

사용 방법

  1. 완전히 랜덤한 ID가 필요하면 v4, 만든 시각 순서로 정렬되는 ID가 필요하면 v7을 고릅니다.
  2. 필요한 개수를 1에서 500 사이로 정하고, 쓰는 시스템에 맞춰 대문자나 하이픈 없음에 체크합니다.
  3. 모두 복사를 누릅니다. 가지고 있는 UUID를 확인하려면 맨 아래 칸에 붙여 넣으세요. 버전, 변형(variant), v7이면 만든 시각까지 보여 줍니다.

계산 방법

UUID는 128비트 값을 16진수 32자리로 적고 다섯 묶음으로 나눈 것입니다. 세 번째 묶음의 4비트가 버전을, 네 번째 묶음의 앞쪽 비트가 변형을 나타냅니다. 그래서 v4는 언제나 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 모양이고, y는 8, 9, a, b 중 하나입니다.

버전 4는 나머지 122비트를 브라우저의 암호용 난수로 채웁니다. 겹칠 걱정은 현실적으로 하지 않아도 됩니다.

버전 7은 앞부분이 밀리초 단위 48비트 유닉스 시각이고 뒤는 난수입니다. 나중에 만든 ID가 뒤에 정렬되니 데이터베이스 인덱스가 흐트러지지 않습니다. 한 번에 여러 개를 만들 때는 같은 밀리초에 생겨도 카운터로 만든 순서를 지킵니다.

자주 묻는 질문

v4와 v7 중 무엇을 써야 하나요?

겹치지 않는 ID만 있으면 되면 v4를 쓰세요. 데이터베이스 키로 쓴다면 v7이 낫습니다. 새 행이 인덱스 곳곳에 흩어지지 않고 끝에 붙어서 쓰기가 빠르고, 만든 순서로 정렬하기도 쉽습니다.

UUID가 겹칠 수도 있나요?

이론상으로는 가능하지만 실제로는 일어나지 않는다고 봐도 됩니다. v4는 랜덤 비트가 122개라서, 겹칠 만해지려면 초당 수십억 개를 수십 년 동안 만들어야 합니다.

v7 UUID를 보면 만든 시각을 알 수 있나요?

네. 앞 12자리 16진수에서 누구나 밀리초 단위 시각을 읽을 수 있습니다. 공개 토큰처럼 생성 시각을 숨겨야 하는 값에는 v7을 쓰지 마세요.

UUID를 비밀번호나 시크릿으로 써도 되나요?

브라우저의 암호용 난수로 만들지만 UUID는 식별자 용도입니다. 비밀번호나 API 키는 전용 토큰 생성기로 만드세요.