3

RFC 4122相当详细地定义了UUID 。当前定义了 5 个变体,全部为 128 位,但位的派生方式各不相同。

为什么要关心遵守特定的变体?一旦创建了 ID,使用 UUID 的人为什么需要知道它是如何构造的?

特别是,如果我要使用变体 4(完全随机),遵循 RFC 将随机位从 128 减少到 122(变体 4b 位,保留 2 位)似乎是一种浪费。我不遵循 RFC 并使用所有 128 位随机性不是更好吗?

4

1 回答 1

5

如果您不遵守规则,那么您的 ID 可能会与其他算法之一生成的 ID 发生冲突。

由于某些算法(例如 v1)是确定性的,如果您的算法在版本字段中意外生成带有“1”的 GUID,攻击者可能会强制发生 GUID 冲突:他们将 MAC 地址设置为与您的 GUID 的最后一部分匹配并等待时间匹配开始部分。然后他们点击提交并繁荣,GUID 冲突,数据库爆炸,资金被转移到开曼群岛。每种算法都旨在避免与自身发生冲突,但它无法防止与其他算法发生冲突。只要遵守规则。不要试图对那些额外的 6 位鬼鬼祟祟。

于 2012-11-28T08:28:16.903 回答