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

Mik*_*ike 3 database standards uuid guid

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

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

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

Ray*_*hen 5

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

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