uuidv5 Функция
uuidv5 генерирует UUID, основанный на имени, как описано в разделе 4.3 RFC 4122; такой UUID также известен как UUID «версии 5».
uuidv5(namespace, name)
В отличие от псевдослучайных UUID, создаваемых функцией uuid, UUID, основанные на имени, формируются на основе пространства имён и имени. Если пространство имён и имя не меняются, каждый раз получается одно и то же значение UUID.
Пространства имён для UUID, основанных на имени, сами являются UUID, но для удобства чтения эта функция принимает некоторые ключевые слова в качестве псевдонимов пространств имён, назначенных в RFC 4122:
| Ключевое слово | Идентификатор пространства имён | Формат имени |
|---|---|---|
"dns" |
6ba7b810-9dad-11d1-80b4-00c04fd430c8 |
Полное доменное имя DNS. |
"url" |
6ba7b811-9dad-11d1-80b4-00c04fd430c8 |
Любой допустимый URL, определённый в RFC 3986. |
"oid" |
6ba7b812-9dad-11d1-80b4-00c04fd430c8 |
Идентификатор объекта ISO/IEC |
"x500" |
6ba7b814-9dad-11d1-80b4-00c04fd430c8 |
Отличительное имя X.500 |
Чтобы использовать любое другое пространство имён, не указанное в таблице выше, передайте назначенный ему идентификатор пространства имён первым аргументом в обычном формате строки UUID.
Примеры
По возможности используйте ключевые слова пространств имён, чтобы будущим читателям было понятнее, что именно вы имеете в виду:
> uuidv5("dns", "www.opentofu.org")
df1e675d-b743-5f6c-9952-6311d0f141df
> uuidv5("url", "https://www.opentofu.org/")
ace93eea-1a2c-5eed-b41b-718be15d2e50
> 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", "www.opentofu.org")
df1e675d-b743-5f6c-9952-6311d0f141dfЕсли вы хотите использовать пространство имён, определённое вне RFC 4122, необходимо указать UUID пространства имён, поскольку соответствующего ключевого слова не существует:
> uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library")
ede1a974-df7e-5f17-84b9-76208818b2c8При использовании UUID пространств имён в явном виде добавьте рядом с выражением комментарий, поясняющий, какое пространство имён оно представляет. Например, можно сослаться на стандарт, в котором оно определено.
Связанные функции
-
uuid, которая генерирует псевдослучайные UUID.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/language/functions/uuidv5/