我必须误解 Python 的uuid模块或生成 UUID 的 RFC
如何同时使用域名和对象名生成 UUID3 字符串?
我看到“版本 3 UUID 是从限定名称空间生成的,例如 URL 或域名以及对象 ID 或名称。”
但是,在 python.org 上说用法是uuid.uuid3(namespace, name)。由于这里的“命名空间”应该指定“名称”的类型,我应该如何指定“域名”和“对象名”?
我必须误解 Python 的uuid模块或生成 UUID 的 RFC
如何同时使用域名和对象名生成 UUID3 字符串?
我看到“版本 3 UUID 是从限定名称空间生成的,例如 URL 或域名以及对象 ID 或名称。”
但是,在 python.org 上说用法是uuid.uuid3(namespace, name)。由于这里的“命名空间”应该指定“名称”的类型,我应该如何指定“域名”和“对象名”?
从RFC 的第 4.3 节:
第 3 版或第 5 版 UUID 用于从“名称”生成 UUID,这些“名称”来自某个“名称空间”,并且在其中是唯一的。名称和名称空间的概念应作广义解释,而不限于文本名称。例如,某些名称空间是域名系统、URL、ISO 对象 ID (OID)、X.500 专有名称 (DN) 和编程语言中的保留字。
所以 UUID3 需要一个命名空间标识符(一个 UUID)和一个名称。不是域名和对象名。如果您使用域名作为名称,请使用uuid.NAMESPACE_DNS
UUID。