UUID有多独特?

696

使用UUID来唯一标识某些东西(我用它来上传到服务器的文件)有多安全?据我所知,它是基于随机数的。然而,我认为在足够长的时间内,仅凭纯粹的偶然性,它最终会重复自身。是否有更好的系统或某种类型的模式来缓解这个问题?


25
如果时间足够长,那么这个值就足够大了 :) - lutz
141
“UUID有多独特?” “我相信它是全球唯一的。” ;) - Miles
47
除非你计划在金星上开发,否则 GUID 应该就足够了。 - skaffman
27
“unique” 意味着“绝不会碰撞”。如果有任何可能会产生冲突,那么它就不是独一无二的。因此按照定义,UUID 不是独一无二的,只有在你准备好面对潜在碰撞并且不考虑发生碰撞的几率时才是安全的。否则,你的程序就是错误的。你可以将 UUID 称为“几乎唯一”,但这并不意味着它是“独一无二”的。 - eonil
10
UUID(通用唯一标识符)“在实际应用中”是唯一的,即使存在生成重复值的可能性非常小,除非生成的ID数量开始足够大以至于这种情况在统计学上变得显著,否则依赖于此的程序并不会出错。 - Nathan Griffiths
显示剩余5条评论
12个回答

3

1
请注意,此处链接的参考文献讨论的是版本1 UUID(其中包含有关生成计算机等的信息)。大多数其他答案都涉及版本4(完全随机)。上述链接的维基百科文章http://en.wikipedia.org/wiki/Universally_unique_identifier解释了不同类型的UUID。 - kratenko

2

我应该提到我在亚马逊上购买了两个 Seagate 外置硬盘,它们具有相同的设备 UUID,但 PARTUUID 不同。据推测,用于格式化硬盘的克隆软件也复制了 UUID。

显然,由于有缺陷的克隆或复制过程,UUID 冲突更有可能发生,而不是随机巧合。在计算 UUID 风险时请记住这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接