然而,据我所知,如果不知道名称,就无法检查特定的UUID是否是使用特定的名称空间生成的。 正确。v5 UUID中的命名空间与密钥一起散列,并且没有办法反转它。 我考虑过简单地生成UUID v4并将前4个字符替换为常量值 当然。这是一个很常见的方法,尽管我经常看到人们使用比2更多的字节作为前缀。我看到的大多数人在开始时使用几个字节的常量但随机的前缀,后面是他们的内部名称空间,后面是随机id。但这并不重要。只要您的UUID不与其他系统的UUID混合,就不需要担心前缀部分的冲突。而且只要有足够的字节仍然是随机的,你就绝对不必担心其他地方的冲突。 在v4 UUID中只有6-8位被定义和they're not at the beginning。它是十六进制编码中第13位和第17位的不同部分。所以我可能会避免混淆这两个数字,但我从来没有遇到过一个系统,实际上验证了版本信息。如果你只是生成一个随机的128位,它将在我见过的每一个系统中正常工作。但我是一个坚持格式的人,所以我个人使用always set the bits correctly,主要是因为它让我高兴,而不是因为消费系统实际上关心。您的方案是好的,只要您没有与其他人可能选择了相同名称空间标识符的其他系统混合在一起。
1条答案
按热度按时间txu3uszq1#
然而,据我所知,如果不知道名称,就无法检查特定的UUID是否是使用特定的名称空间生成的。
正确。v5 UUID中的命名空间与密钥一起散列,并且没有办法反转它。
我考虑过简单地生成UUID v4并将前4个字符替换为常量值
当然。这是一个很常见的方法,尽管我经常看到人们使用比2更多的字节作为前缀。我看到的大多数人在开始时使用几个字节的常量但随机的前缀,后面是他们的内部名称空间,后面是随机id。但这并不重要。只要您的UUID不与其他系统的UUID混合,就不需要担心前缀部分的冲突。而且只要有足够的字节仍然是随机的,你就绝对不必担心其他地方的冲突。
在v4 UUID中只有6-8位被定义和they're not at the beginning。它是十六进制编码中第13位和第17位的不同部分。所以我可能会避免混淆这两个数字,但我从来没有遇到过一个系统,实际上验证了版本信息。如果你只是生成一个随机的128位,它将在我见过的每一个系统中正常工作。但我是一个坚持格式的人,所以我个人使用always set the bits correctly,主要是因为它让我高兴,而不是因为消费系统实际上关心。您的方案是好的,只要您没有与其他人可能选择了相同名称空间标识符的其他系统混合在一起。