Генерация детерминированного c UID в зависимости от адреса MA C и имени пользователя - PullRequest
3 голосов
/ 10 марта 2020

Я пишу подпрограмму Python для создания файлов DICOM. В этом случае мне нужно указать тег UID Instance Creator, который используется для уникальной идентификации устройства, создавшего файл DICOM. Поэтому мне нужна функция, которая генерирует такой UID для данного компьютера, и определенного пользователя c, который запустил процедуру создания DICOM.

Я предполагаю, что UUID может быть создан из адреса MA C и имя пользователя. Однако UID, сгенерированный с помощью модуля uuid в python, является случайным, поэтому UID меняется каждый раз при вызове подпрограммы.

Существует ли способ создания terministi c UID, это будет зависеть от адреса MA C и имени пользователя?

1 Ответ

2 голосов
/ 10 марта 2020

UUID3 и 5 - это имена, основанные на имени, поэтому они не будут меняться случайным образом (по компонентам времени).

import uuid
import getpass

username = getpass.getuser(). # Username
node = hex(uuid.getnode())  # MAC address

urn = 'urn:node:%s:user:%s' % (node, username)

for i in range(3):
    print (uuid.uuid3(uuid.NAMESPACE_DNS, urn))

Вывод:

4b3be55c-c6d9-3252-8b61-b16700fa6528
4b3be55c-c6d9-3252-8b61-b16700fa6528
4b3be55c-c6d9-3252-8b61-b16700fa6528

Для получения дополнительной информации укажите at 1007 *https://pymotw.com/3/uuid/

...