为什么UUID标准很复杂,我应该遵循它们吗?

时间:2012-11-27 19:57:47

标签: database standards guid uuid

RFC 4122非常详细地定义了UUIDs。目前定义了5种变体,所有变量都是128位,但在如何导出位方面有所不同。

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

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

1 个答案:

答案 0 :(得分:5)

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

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