사용 방법
버전을 고르고 개수(1 ~ 1000개)를 정한 뒤 “생성하기”를 누르면 브라우저 안에서 UUID가 만들어집니다. 대문자, 하이픈 제거, 중괄호 옵션을 켜면 결과 형식이 바뀌고, 전체 복사나 .txt 다운로드로 필요한 곳에 붙여넣을 수 있습니다. 아래 UUID 분석기에 UUID 하나를 붙여넣으면 버전, 변형(variant), 그리고 버전 7이라면 담겨 있는 생성 시각까지 확인할 수 있습니다.
버전 4와 버전 7의 차이
버전 4는 122비트 전부를 암호학적으로 안전한 난수로 채워서 값만 보고는 아무것도 추측할 수 없습니다. 대신 정렬 순서가 없어서 데이터베이스 기본 키로 쓰면 새 값이 인덱스 여기저기에 무작위로 끼어들어(지역성이 없음) B-tree 페이지 분할이 잦아지고 캐시 적중률이 떨어집니다. 버전 7은 앞 48비트에 밀리초 단위 생성 시각을 그대로 담아, 값 자체가 생성 순서대로 정렬됩니다. 그래서 기본 키로 쓰면 새 값이 항상 인덱스 끝에 쌓여 페이지 분할이 줄고 캐시 적중률도 높아집니다. 두 버전 모두 RFC 9562 표준을 따르고, 무작위 부분은 이 도구에서 브라우저의 암호학적 난수 함수(crypto.getRandomValues)로 만듭니다.
같은 밀리초 안에서도 정렬되는 이유
버전 7은 타임스탬프 뒤에 12비트 여유 공간(rand_a)이 있는데, 이 도구는 같은 밀리초 안에서 여러 개를 만들 때 이 값을 하나씩 늘려 씁니다. 그 결과 한 번에 여러 개를 생성해도 문자열을 그대로 정렬한 순서가 실제로 만든 순서와 같습니다.
충돌 가능성
버전 4는 122비트의 무작위 공간을 쓰기 때문에 초당 10억 개씩 만들어도 우연히 같은 값이 나올 확률은 사실상 0에 가깝습니다(생일 문제로 계산해도 약 50%의 충돌 확률에 이르려면 10^18개 넘게 만들어야 합니다). 버전 7은 무작위 부분이 74비트로 더 작지만, 같은 밀리초 안에서는 카운터로 값을 구분하기 때문에 이 도구로 만드는 동안에는 겹치지 않습니다.
개인정보
UUID는 이 브라우저 안에서만 만들어지고 서버로 전송되지 않습니다. 다만 버전 7 UUID는 생성 시각을 그대로 담고 있으므로, 시각이 노출되면 안 되는 값(예: 익명으로 남아야 하는 식별자)에는 버전 4를 쓰는 것이 안전합니다.