在uuid5实现中是否必须使用名称空间?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在uuid5实现中是否必须使用名称空间?相关的知识,希望对你有一定的参考价值。
我正在尝试用java测试uuid5的各种实现,并使用python作为参考实现,因为它是由corelibs提供的。但是,看起来python的uuid5要求传递一个命名空间uuid作为第一个参数。 “无”将不起作用。但是,Java的com.fasterxml.uuid.Generators nameBasedGenerator将接受名称空间的“空”。哪个是正确的?是否有用于uuid5生成的“全局”或“默认”名称空间的概念。
是否存在用于uuid5生成的“全局”或“默认”名称空间的概念。
UUID RFC中没有这样的概念。名称空间代表命名系统,将从中提取您正在使用的名称。没有通用的命名系统,因此谈论“全局”名称空间是没有意义的。但是,有一些标准的名称空间UUID。它们记录在RFC 4122 Appendix C
Python的uuid5需要传递一个命名空间uuid作为第一个参数。
None
将不起作用。但是,Java的com.fasterxml.uuid.Generators nameBasedGenerator
将接受名称空间的null
com.fasterxml.uuid.Generators
API不是标准的Java API。用于UUID的标准Java API为java.util.UUID
,但不支持5型UUID生成。
哪个是正确的?
我看了com.fasterxml.uuid.Generators
的代码。如果提供了null
名称空间,则跳过将名称空间UUID与名称连接在一起的步骤。这与RFC 4122 Section 4.3中列出的类型3/5算法不符,因此从技术上讲是不正确的。
但是,与RFC的这种偏离不应破坏任何东西。它不会以比通常预期的类型3/5 UUID更高的速率生成UUID冲突。我倾向于将其称为无害(尽管是非标准的)扩展。
所以...
名称空间在uuid5实现中是强制性的吗?
RFC并未声明名称空间是强制性的,如果没有提供名称空间,该怎么办。一般而言,UUID生成API,尤其是该API行为是当前编写的RFC的[[超出范围。
以上是关于在uuid5实现中是否必须使用名称空间?的主要内容,如果未能解决你的问题,请参考以下文章