基于名称的UUID是否满足这些条件



由于某些原因,当输入相同的字符串时,我必须制作相同的UUID,如下所示。

UUID.nameUUIDFromBytes(str.getBytes());

我想知道的是,这个新的UUID满足以下条件。

  • 只要输入字符串相同,我就可以获得相同的生成UUID
  • 只要输入str不同,生成的UUID就必须不同
  • 由基于时间的UUID创建的随机创建的UUID是否有可能与这个新的UUID重复

我在UUID文档中检查了这些,但我希望得到更多的确认,因为没有这些条件的部署可能会使我们的系统灾难。

"只要str相同,我就可以得到相同的UUID">

是的,如RFC 4122-4.3中所定义。创建基于名称的UUID:的算法

这些类型的UUID的要求如下:

  • 在不同时间从同一命名空间中的同一名称生成的UUID必须相等

";只要输入str不同,UUID就必须不同">

是(和否(,如RFC 4122-4.3中所定义的。创建基于名称的UUID:的算法

[…]

由同一命名空间中的两个不同名称生成的UUID应该是不同的(具有非常高的概率(。

实际上,不同的字节数组会产生不同的UUID。但是已经存在MD5冲突,因此;具有非常高的概率";。

"由基于时间的UUID创建的随机创建的UUID是否有可能与这个新的UUID重复">

否,基于名称的UUID将版本号设置为3(或5(,基于时间的UUID的版本设置为1

最新更新