基于名称的 UUID 是否满足这些条件?
Does name based UUID satisfy those conditions?
出于某种原因,当输入相同的字符串时,我必须制作相同的 UUID,如下所示。
UUID.nameUUIDFromBytes(str.getBytes());
我想知道的是这个新的UUID满足以下条件。
- 只要输入字符串相同,我就可以获得相同的生成 UUID。
- 只要输入的字符串不同,生成的UUID就一定不同
- 由基于时间的 UUID 创建的随机创建的 UUID 是否有可能与这个新的 UUID 重复。
我检查了 UUID 文档中的内容,但我想要更多确认,因为没有这些条件的部署会使我们的系统发生灾难。
“只要str相同,我就可以获得相同的UUID”
是,如RFC 4122 - 4.3. Algorithm for Creating a Name-Based UUID中所定义:
The requirements for these types of UUIDs are as follows:
- The UUIDs generated at different times from the same name in the same namespace MUST be equal.
“就输入字符串不同而言,UUID 必须不同。”
是(和否),如RFC 4122 - 4.3. Algorithm for Creating a Name-Based UUID中所定义:
[...]
The UUIDs generated from two different names in the same namespace
should be different (with very high probability).
实际上,不同的字节数组会导致不同的 UUID。但是已经发生了MD5冲突,所以说“很有可能”。
“由 Time-based UUID 创建的随机创建的 UUID 是否有可能与这个新的 UUID 重复。”
不,name-based UUID 的版本号设置为 3
(或 5
),基于时间的 UUID 的版本号设置为 1
。
出于某种原因,当输入相同的字符串时,我必须制作相同的 UUID,如下所示。
UUID.nameUUIDFromBytes(str.getBytes());
我想知道的是这个新的UUID满足以下条件。
- 只要输入字符串相同,我就可以获得相同的生成 UUID。
- 只要输入的字符串不同,生成的UUID就一定不同
- 由基于时间的 UUID 创建的随机创建的 UUID 是否有可能与这个新的 UUID 重复。
我检查了 UUID 文档中的内容,但我想要更多确认,因为没有这些条件的部署会使我们的系统发生灾难。
“只要str相同,我就可以获得相同的UUID”
是,如RFC 4122 - 4.3. Algorithm for Creating a Name-Based UUID中所定义:
The requirements for these types of UUIDs are as follows:
- The UUIDs generated at different times from the same name in the same namespace MUST be equal.
“就输入字符串不同而言,UUID 必须不同。”
是(和否),如RFC 4122 - 4.3. Algorithm for Creating a Name-Based UUID中所定义:
[...]
The UUIDs generated from two different names in the same namespace should be different (with very high probability).
实际上,不同的字节数组会导致不同的 UUID。但是已经发生了MD5冲突,所以说“很有可能”。
“由 Time-based UUID 创建的随机创建的 UUID 是否有可能与这个新的 UUID 重复。”
不,name-based UUID 的版本号设置为 3
(或 5
),基于时间的 UUID 的版本号设置为 1
。