GrepBoardTools GrepBoard 매뉴얼 ↗ Log ↗

Tools / 텍스트·인코딩

UUID · ULID · 토큰 만들기

종류와 개수를 고르거나, 017F22E2-79B0-7CC3-98C4-DC0C0C07398F 같은 값을 붙여 넣어 풉니다.

입력한 값은 브라우저 안에서만 계산하고 서버로 보내지 않습니다.

만들기

UUID · ULID 풀기

무엇을 하나

UUID v4(난수) · UUID v7(시각순) · ULID · 임의 토큰을 한 번에 1~1,000개 만듭니다. 난수는 모두 브라우저의 crypto.getRandomValues 에서 얻고, 토큰은 문자 수로 나눌 때 남는 바이트를 버려 어느 글자도 더 자주 나오지 않게 고릅니다. 붙여 넣은 UUID 는 버전 · 변형을 읽고, v1 · v6 · v7 과 ULID 는 들어 있는 시각을 풉니다.

예시

값풀이
017F22E2-79B0-7CC3-98C4-DC0C0C07398Fv7 · RFC 9562 변형 · 2022-02-22T19:22:22.000Z (RFC 9562 부록 A.6 예시)
C232AB00-9414-11EC-B3C8-9F6BDECED846v1 · 2022-02-22T19:22:22.0000000Z · 클록 시퀀스 13256 (부록 A.1)
919108f7-52d1-4320-9bac-f847db4148a8v4 · 시각 없음
00000000-0000-0000-C000-000000000046Microsoft GUID 변형 — 버전 칸의 뜻이 정해져 있지 않음
01ARZ3NDEKTSV4RRFFQ69G5FAVULID · 2016-07-30T23:54:10.259Z
8ZZZZZZZZZZZZZZZZZZZZZZZZZ풀 수 없음 — 첫 글자가 7 보다 크면 48비트 시각을 넘음

어느 것을 쓰나

  • UUID v4: 122비트가 난수입니다. 순서가 필요 없는 식별자에 씁니다.
  • UUID v7: 앞 48비트가 Unix 시각(밀리초)이라 문자열 순서 = 만든 순서입니다. 데이터베이스 기본 키처럼 정렬 · 색인이 중요한 곳에 알맞습니다. 이 도구는 같은 밀리초에 여러 개를 만들면 12비트 카운터를 써서(RFC 9562 §6.2 방법 1) 한 번에 만든 것끼리 순서가 유지되게 합니다.
  • ULID: 시각 48비트 + 난수 80비트를 Crockford Base32 26자로 씁니다. 하이픈이 없고 짧습니다. 같은 밀리초에는 난수 부분에 1 을 더합니다(ULID 사양).
  • 임의 토큰: API 키 · 초대 코드 · 임시 비밀번호처럼 사람이 붙여 넣는 값. 길이 × log₂(문자 수)가 가능한 값의 비트 수입니다(예: Base64url 32자 = 192비트).

어떻게 확인했나

공개 전에 대조해 모두 맞았습니다: 만든 v4 · v7 · ULID 각 200개를 python3 uuid 와 ULID 사양대로 따로 짠 풀이기로 검사(버전 · 변형 비트, v7 · ULID 의 시각이 만든 때 안인지, 한 번에 만든 것이 문자열 순으로 정렬되는지), 토큰 200개의 길이 · 문자 집합, 시계가 멈추거나 뒤로 가는 가짜 시계에서의 순서, 그리고 알려진 값 24개(RFC 9562 부록의 v1 · v3 · v4 · v5 · v6 · v7 · v8 예시, nil · max, 다른 변형, python 이 만든 v1 · v3 · v5, ULID 예시 · 최소 · 최대)를 python 결과와 비교했습니다. RFC 가 적은 시각(2022-02-22 14:22:22 GMT-05:00)과도 직접 맞춰 보았습니다. 난수의 품질 자체는 브라우저의 CSPRNG 에 맡기며 이 도구가 따로 주장하지 않습니다.

흔한 실수

  • v7 · ULID 에 시각이 들어 있다는 것을 잊기 — 값만 보고도 언제 만들었는지 알 수 있습니다. 만든 시각을 숨겨야 하면 v4 를 씁니다.
  • UUID 를 비밀값으로 쓰기 — UUID 는 식별자입니다. 비밀번호 재설정 링크 같은 비밀에는 충분히 긴 임의 토큰을 씁니다.
  • ULID 에 I · L · O 를 잘못 쳐 넣기 — Crockford Base32 는 이 글자를 쓰지 않습니다. 이 도구는 1 · 0 으로 짐작해 읽지 않고 오류로 알립니다.

자주 묻는 것

명령줄에서는 어떻게 만드나요?

리눅스에서 cat /proc/sys/kernel/random/uuid 나 uuidgen -r 은 v4 를 만듭니다. 최근 util-linux 의 uuidgen -7(--time-v7)은 v7 을 만듭니다 — 배포판의 버전이 낮으면 이 옵션이 없으니 uuidgen --help 로 확인합니다. 토큰은 openssl rand -hex 16 이나 openssl rand -base64 24 가 흔히 쓰입니다.

같은 값이 나올 수 있나요?

v4 는 122비트가 난수라 확률이 매우 낮지만 0 은 아닙니다. 데이터베이스에서는 고유 제약을 함께 둡니다.

만든 값이 서버에 남나요?

아니요. 값은 이 브라우저 안에서 만들고 어디에도 보내지 않습니다. 주소창이나 브라우저 저장소에도 쓰지 않고, 이 사이트의 방문 통계와 광고에도 넘기지 않습니다. 자세한 것은 개인정보 처리 안내에 있습니다.