uuidv5 함수
uuidv5 함수
uuidv5는 RFC 4122 4.3절에 설명된 이름 기반 UUID(name-based UUID)를 생성해 주는 함수예요. "version 5" UUID라고도 불립니다.
출처: Packer 공식 문서
본문
uuidv5는 RFC 4122 4.3절에 설명된 이름 기반 UUID로, "version 5" UUID라고도 알려진 것을 생성합니다.
uuidv5(namespace, name)
uuidv4가 생성하는 의사 난수(pseudo-random) UUID와 달리, 이름 기반 UUID는 네임스페이스(namespace)와 이름(name)에서 유도되기 때문에 네임스페이스와 이름이 바뀌지 않으면 매번 동일한 UUID 값을 만들어 내요.
이름 기반 UUID의 네임스페이스는 그 자체가 UUID이지만, 가독성을 위해 이 함수는 RFC 4122가 할당한 네임스페이스의 별칭으로 일부 키워드를 받아들입니다.
| Keyword | Namespace ID | Name format |
|---|---|---|
| "dns" | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | A fully-qualified DNS domain name. |
| "url" | 6ba7b811-9dad-11d1-80b4-00c04fd430c8 | Any valid URL as defined in RFC 3986. |
| "oid" | 6ba7b812-9dad-11d1-80b4-00c04fd430c8 | An ISO/IEC object identifier |
| "x500" | 6ba7b814-9dad-11d1-80b4-00c04fd430c8 | X.500 Distinguished Name |
위 표에 없는 다른 네임스페이스를 사용하려면, 할당된 네임스페이스 ID를 첫 번째 인자에 일반적인 UUID 문자열 형식으로 직접 전달하세요.
Examples
가능하면 네임스페이스 키워드를 사용해서, 나중에 읽는 사람이 의도를 더 쉽게 알 수 있게 하세요.
> uuidv5("dns", "developer.hashicorp.com")
a5008fae-b28c-5ba5-96cd-82b4c53552d6
> uuidv5("url", "https://developer.hashicorp.com/")
9db6f67c-dd95-5ea0-aa5b-e70e5c5f7cf5
> uuidv5("oid", "1.3.6.1.4")
af9d40a5-7a36-5c07-b23a-851cd99fbfa5
> uuidv5("x500", "CN=Example,C=GB")
84e09961-4aa4-57f8-95b7-03edb1073253
네임스페이스 키워드는 해당 네임스페이스 UUID와 동등하게 취급되며, 일부 특수한 경우에는 UUID 형태를 쓰는 것이 더 적절할 수 있어요.
> uuidv5("6ba7b810-9dad-11d1-80b4-00c04fd430c8", "developer.hashicorp.com")
a5008fae-b28c-5ba5-96cd-82b4c53552d6
RFC 4122 외부에서 정의된 네임스페이스를 사용하고 싶다면, 해당하는 키워드가 없으므로 네임스페이스 UUID를 사용하는 것이 필수적이에요.
> uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library")
ede1a974-df7e-5f17-84b9-76208818b2c8
원시 UUID 네임스페이스를 쓸 때는 이 네임스페이스가 무엇을 의미하는지, 예를 들어 이를 정의한 표준을 참조해서 사람이 알아볼 수 있는 방식으로 설명하는 주석을 표현식 옆에 함께 달아 두는 것을 고려해 보세요.
더 알아보기 (Learn more)
uuidv4는 의사 난수 UUID를 생성해 줘요.