3

Data::UUID 的文档指出

UUID 的长度为 128 位,并且保证与 3400 CE 之前生成的所有其他 UUID/GUID 不同。

APR::UUID 的文档将生成的标识符描述为random

这是否意味着 APR::UUID 创建的 GUID 不能保证是唯一的?

4

2 回答 2

3

维基百科上关于UUIDsGUIDs的文章在这里很有指导意义。

UUID 是随机的,但从如此大的分布中得出,碰撞的概率很小,在这种情况下,微不足道意味着在生成两个相同的 UUID 之前,您可能会被数千颗小行星撞击。

GUID 大多是随机的,但也会在您的系统中包含一些确定性但唯一的数据,例如网络硬件的 MAC 地址和当前时间,因此在另一个系统上创建的 GUID 之间发生冲突的可能性更小。

于 2011-12-12T02:44:17.370 回答
0

我意识到这是一个老问题,但是当我偶然发现这个问题时,我想我会分享一些观察结果。

正如 daxim 所说,APR::UUID 使用 libuuid。然而,至少在某些实现中,libuuid 不会生成随机 (v4) UUID,而是生成 v1 UUID(基于 MAC 地址和时间戳)。这些确实是唯一的(只要您的 MAC 地址确实是唯一的),但它们会收集信息(您的 MAC 地址和生成 UUID 的时间)并且可能至少在某种程度上是可预测的。

如果 UUID 生成代码符合规范,您可以通过查看 3 组的第一个数字来找出生成的 UUID 版本。v1 UUID 不是随机的,而是可预测的。v4 UUID 是随机的并且(据说)是不可预测的。

于 2014-06-26T09:18:18.733 回答