由于某些原因,当输入相同的字符串时,我必须制作相同的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
。