Декодировать имя или пространство имен из UUID - PullRequest
0 голосов
/ 01 мая 2020

Можно ли декодировать пространство имен или имя из заданного UUID?

Моя идея состоит в том, чтобы позднее создать UUID с определенным пространством имен или именем, а затем извлечь его, чтобы проверить, принадлежат ли 2 UUID то же пространство имен или имя. Это возможно?

1 Ответ

1 голос
/ 01 мая 2020

Как указано в RFC4122 , UUID3 и UUID5 пространства имен и имена хешированы MD5 или SHA1 ), что означает, что нет другого способа «декодировать» пространство имен или имя из заданного UUID, кроме bruteforce (в этом весь смысл ha sh функций ).

Вычислить га sh идентификатора пространства имен, объединенного с именем.

RFC422 - 4.3 - Алгоритм создания UUID на основе имени

Однако вы можете напрямую сравнить хешированные пространства имен и имя, чтобы определить, принадлежат ли два UUID одному и тому же пространству имен и действительно имеют одно и то же имя. Вот пример в Python (используется стандартный модуль uuid):

import uuid

name = 'stackoverflow.com'

a = uuid.uuid5(namespace=uuid.NAMESPACE_DNS, name=name)
b = uuid.uuid5(namespace=uuid.NAMESPACE_DNS, name=name)
assert a == b

print(a)
print(b)
cd84c40a-6019-50c7-87f7-178668ab9c8b
cd84c40a-6019-50c7-87f7-178668ab9c8b
...