根据 MAC 地址和用户名生成确定性 UUID

Generate determinisitic UID dependent on the MAC adress and user name

我正在编写 Python 例程来生成 DICOM 文件。在这种情况下,我需要指定 Instance Creator UID 标签,用于唯一标识创建 DICOM 文件的设备。 所以我需要一个函数来为给定的机器和启动 DICOM 创建例程的特定用户生成这样的 UID。

我想可以从 MAC 地址和用户名创建 UUID。但是python中的uuid模块生成的UID是随机的,所以每次调用例程的UID都不一样。

有没有办法根据 MAC 地址和用户名生成 确定性 UID?

UUID3 和 5 是基于名称的 uuid,因此它们不会随机更改(按时间分量)。

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

有关更多信息,请访问 https://pymotw.com/3/uuid/