在Java中使用UUID的最高有效位的冲突可能性

如果我正在使用Long uuid = UUID.randomUUID().getMostSignificantBits()发生冲突可的可能性。它会切掉最低有效位,所以有可能发生冲突可,对吗?

回答:

根据文档,静态方法UUID.randomUUID()生成类型4 UUID。

这意味着六位用于某种类型信息,其余的122位是随机分配的。

分布了六个非随机位,其中UUID的最高有效一半分配了四个,而最低有效一半分配了两个。因此,你UUID的最重要的一半包含60位随机性,这意味着你平均需要生成2 ^ 30个UUID才能发生冲突(相比之下,完整UUID则为2 ^ 61)。

所以我要说你很安全。但是请注意,正如Carl Seleborg提到的,对于其他类型的UUID绝对不是这样。

顺便说一句,通过使用UUID的最低有效部分(或仅使用SecureRandom生成随机长整型),你的状况会稍好一些。

以上是 在Java中使用UUID的最高有效位的冲突可能性 的全部内容, 来源链接: utcz.com/qa/426854.html

回到顶部