import uuid uuid.uuid3(namespace, name) uuid.uuid5(namespace, name)
namespace
- идентификатор пространства имен UUID,name
- строка с доменным именем или URL-адресом или ISO OID или DN X.500 в DER.Функция uuid.uuid3()
создает уникальный индификатор UUID на основе хеша MD5 идентификатора пространства имен и имени, которое является строкой.
Функция uuid.uuid5()
создает уникальный индификатор UUID на основе хеша SHA-1 идентификатора пространства имен и имени, которое является строкой.
Функции возвращают объект UUID
. Для преобразования объекта UUID
в строку используйте встроенную функцию str()
.
import uuid hostnames = ['google.com', 'yandex.ru'] for name in hostnames: print(name) print(' MD5 :', uuid.uuid3(uuid.NAMESPACE_DNS, name)) print(' SHA-1 :', uuid.uuid5(uuid.NAMESPACE_DNS, name)) # google.com # MD5 : 9a74c83e-2c09-3513-a74b-91d679be82b8 # SHA-1 : 64ee70a4-8cc1-5d25-abf2-dea6c79a09c8 # yandex.ru # MD5 : a972a02a-88bb-3ebc-8737-94fc05f80d70 # SHA-1 : ed1f4bb4-5f0b-5fc3-8a76-1da5999b80f3
Преобразование объекта UUID
в строку:
>>> import uuid >>> uid = uuid.uuid3(uuid.NAMESPACE_DNS, 'docs-python.ru') >>> uid # UUID('677480ad-8081-3224-8e08-a581155f45a3') >>> str(uid) # '677480ad-8081-3224-8e08-a581155f45a3'
uuid.NAMESPACE_DNS
:Когда указано пространство имен uuid.NAMESPACE_DNS
, то строка имени name
является полным доменным именем.
uuid.NAMESPACE_URL
:Когда указано пространство имен uuid.NAMESPACE_URL
, то строка имени name
является URL-адресом.
uuid.NAMESPACE_OID
:Когда указано пространство имен uuid.NAMESPACE_OID
, то строка имени name
является ISO OID.
uuid.NAMESPACE_X500
:Когда указано пространство имен uuid.NAMESPACE_X500
, то строка имени name
представляет собой с или в формате текстового вывода.
Из примера видно, что:
name
в пространстве имен всегда одинаково, независимо от того, когда и где оно вычисляется.name
в пространствах имен различны.import uuid namespaces = ['NAMESPACE_DNS', 'NAMESPACE_OID', 'NAMESPACE_URL', 'NAMESPACE_X500'] name = 'docs-python.ru' for namespace in namespaces: print(namespace) namespace_uuid = getattr(uuid, namespace) print(' ', uuid.uuid3(namespace_uuid, name)) print(' ', uuid.uuid5(namespace_uuid, name)) # NAMESPACE_DNS # 0adb4c6f-3407-3961-a01d-897db38ae5a8 # 220b1bee-938a-5ef2-b220-ab5d15741389 # NAMESPACE_OID # 05320aab-f451-3959-94ae-3f53b76e342e # a159a2d1-1ae5-531e-bace-bae492a13ea7 # NAMESPACE_URL # 553947a1-3bda-3f9d-9f55-7a22e783a2c8 # a54a7b85-261f-5c41-a6ea-a171710f02f3 # NAMESPACE_X500 # 67227248-6eff-32a3-8268-fc19cce580de # 64fd1623-eda9-5d44-a8c4-ecb6e856b76a