Сообщить об ошибке.

Функциb uuid3() и uuid5() модуля uuid в Python

Создание UUID основанные на значении имени

Синтаксис:

import uuid

uuid.uuid3(namespace, name)
uuid.uuid5(namespace, name)

Параметры:

Возвращаемое значение:

Описание:

Функция 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 представляет собой с или в формате текстового вывода.

Примеры использования:

Из примера видно, что:

  • Значение UUID для данного имени 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