UUID 생성기
개발crypto.randomUUID로 암호학적으로 무작위인 UUID(RFC 4122 v4)를 생성합니다.
이 페이지에서
UUID란?#
UUID(Universally Unique Identifier, Microsoft 시스템에서는 GUID라고도)는 128비트 식별자로, 32개의 16진 숫자가 8-4-4-4-12 그룹으로 나뉘어 렌더링됩니다. 예: c9bf1d4d-7d4f-4b3a-8b2c-1e5f6a7b8c9d. 발상은 단순하지만 강력합니다. 중앙 기관도 없고 기계들 사이의 조정도 없이, 필요할 때마다 식별자를 생성하면서도 둘이 충돌할 확률을 사실상 0으로 만드는 것입니다. 이 특성이 UUID를 분산 데이터베이스의 기본 기본키 전략, 거의 모든 JSON API 리소스의 id 필드, 마이크로서비스를 가로질러 로그 줄을 묶는 상관 ID, 그리고 업로드된 블롭의 파일이름으로 만듭니다.
이 페이지는 RFC 4122 버전 4 UUID를 생성합니다. 무작위 비트로 만들어지는 변종입니다. 버전 4는 현대의 거의 모든 경우에 원하는 것입니다. (v1과 달리) 기계 MAC 주소를 담지 않고, (v3/v5와 달리) 네임스페이스 계층을 내장하지 않으며, 고유성을 오직 암호학적 무작위에 의존합니다. 소문자 또는 대문자로, 전적으로 브라우저에서 단일 UUID 또는 한 번에 최대 10,000개까지 일괄 생성할 수 있습니다.
32개의 16진 숫자 중 두 개는 실제로 무작위가 아닙니다. UUID 자체의 타입을 선언합니다. 위치 14(세 번째 그룹의 첫 글자)의 버전 니블은 항상 4이고, 위치 19(네 번째 그룹의 첫 글자)의 변종 니블은 항상 8, 9, a, 또는 b입니다. 그래서 이 페이지에서 보는 모든 값이 xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx 형태로 읽힙니다. 이 두 고정 위치는 자기 서술적 지문을 겸합니다. 이 모양에 일치하는 문자열은 v4 UUID이며, 한 줄짜리 정규식으로 수백만 개를 검증할 수 있습니다.
사용 방법#
- 상단의 개수 숫자 필드를 원하는 UUID 수로 설정합니다. 1~10,000 어디든. 필드는 그 범위로 클램프됩니다.
- 모두 대문자 출력이 필요하면 대문자 에 체크합니다(일부 레거시 시스템과 Microsoft GUID 관례는
C9BF1D4D-…를 선호). 대부분의 현대 스택이 쓰는 소문자 기본값은 체크 해제입니다. - 생성 을 클릭합니다. 값들이 모노스페이스 출력 영역에 한 줄에 하나씩 나타납니다.
- 복사 를 클릭해 전체 일괄을 클립보드로 복사합니다. SQL
INSERT, CSV, 테스트 픽스처, 또는 시드 스크립트에 바로 붙여넣을 준비가 됩니다. - 새 일괄이 필요할 때 언제든 생성 을 다시 클릭합니다. 클릭마다 새 무작위 비트를 뽑아 이전에 존재하지 않았던 값을 만듭니다.
주요 기능#
- 진짜 암호학적 무작위. 보안 컨텍스트에서는 브라우저의
crypto.randomUUID()를 사용하며, 버전과 변종 비트에 거부 샘플링을 적용하는crypto.getRandomValues폴백을 둡니다. 식별자에 적합하지 않은Math.random()이 아닙니다. - 일괄 생성. 한 번의 클릭으로 최대 10,000개 UUID, 한 줄에 하나. 스크립트를 짜지 않고도 데이터베이스나 픽스처 파일을 시드할 수 있습니다.
- 소문자 또는 대문자. 하나의 토글이 두 관행을 모두 덮습니다.
- RFC 4122 v4 준수. 버전 니블은 항상
4, 변종 니블은 항상8/9/a/b이므로 모든 값이 표준 v4 정규식에 대해 검증됩니다. - 100% 클라이언트 사이드. 백엔드도, 원격 측정도 없습니다. 여기서 생성한 UUID는 어디에도 기록되지 않습니다. 나타나는 순간 사용자의 것입니다.
사용 예#
개수 를 기본값 5로, 대문자 체크 해제로 두고 생성 을 클릭하면 다음과 같은 다섯 줄을 얻습니다(실제 값은 다릅니다 — 무작위이므로).
7f3a9c2e-1b4d-4e8f-a6c3-9d2b8e1f0a47
2c8d4f1a-9e3b-47a2-8c6d-1f5e9a0b3c28
a1b2c3d4-e5f6-4789-abcd-ef0123456789
9e8d7c6b-5a4f-3210-ba98-76543210fedc
4f3e2d1c-0b9a-8765-4321-fedcba987654
어느 줄의 세 번째 그룹을 자세히 보세요. 항상 4로 시작합니다. 네 번째 그룹을 보세요. 항상 8, 9, a, 또는 b로 시작합니다. 이 두 문자는 무작위가 아닙니다. 버전과 변종 표식이며, 한 줄짜리 검증기가 문자열이 진짜 v4 UUID임을 확인할 수 있는 이유입니다.
대문자 에 체크하고 다시 생성하면 같은 형태가 대문자로 나옵니다. 예: 7F3A9C2E-1B4D-4E8F-A6C3-9D2B8E1F0A47. 비트는 동일하고 대문자 GUID를 기대하는 시스템용으로 렌더링된 것입니다.
FAQ#
v4 UUID는 실제로 얼마나 고유한가요? 중복이 생길 수 있나요?#
숫자는 빠르게 터무니없어집니다. 단일 v4 UUID는 122비트의 실제 무작위성(128에서 4 버전 비트와 2 변종 비트를 뺀)을 가집니다. 단 한 번의 충돌이 50% 확률로 나려면 약 2.71 × 10^36개의 UUID를 생성해야 합니다. 이는 우주 나이보다 오래 초당 10억의 10억의 10억개를 생성하는 것입니다. 어떤 현실적인 데이터베이스나 시스템에서도 충돌을 불가능하다고 간주할 수 있으며, 검사할 필요도 없습니다.
이 UUID들을 데이터베이스 기본키로 써도 안전한가요?#
네. 버전 4가 그 목적에 가장 흔한 선택인 것은 조정이 필요 없기 때문입니다. 유일한 주의는 인덱스 단편화입니다. 순수 무작위 키는 B-트리에 흩어지므로 매우 쓰기가 많은 PostgreSQL이나 MySQL 테이블에서는 (시간 정렬된) UUIDv7 변종이 나을 수 있습니다. 응용 프로그램 수준의 리소스 ID, 상관 ID, 그리고 대부분의 테이블에는 일반 v4가 충분합니다.
그냥 Math.random()으로 UUID를 만들면 안 되나요?#
Math.random()은 암호학적으로 건전하지 않기 때문입니다. 출력이 몇 개의 ID를 관찰하면 다른 것들을 추측할 수 있을 만큼 예측 가능할 수 있습니다. 이 도구는 의도적으로 crypto.randomUUID()(그리고 적절한 버전/변종 처리를 한 crypto.getRandomValues 폴백)을 사용하며, 운영체제의 CSPRNG에서 뽑습니다. 사용자, 세션, 또는 리소스를 식별하는 모든 것에 그 구별이 중요합니다.
버전 1, 버전 5 또는 이름 기반 UUID를 여기서 생성할 수 있나요?#
아닙니다. 이 페이지는 의도적으로 v4 전용입니다. v4가 실제 유스케이스의 대다수를 덮고 무작위 소스 외에 입력이 필요 없기 때문입니다. 이름 기반 v5 UUID(이름과 네임스페이스에서 결정론적)가 필요하면, 그것은 다른 계산이며 응용 프로그램 코드 또는 전용 도구에 속합니다.