我知道有很多问题here以及雷蒙德的出色(像往常一样)post。然而,由于创建 GUID 的算法明显发生了变化,我发现很难获得任何最新信息。这MSDN似乎试图提供尽可能少的信息。
关于 .NET 4 中如何生成 GUID,我们了解多少?更改了什么?它如何影响安全性(“随机性”)和完整性(“唯一性”)?
我感兴趣的一个具体方面:在 v1 中,似乎不可能在一台计算机上再次生成相同的 GUID,因为涉及时间戳和计数器。在 v4 中,情况不再是这样(有人告诉我),因此有机会在一台机器上获得相同的 GUID ...增加?
Since 视窗2000Microsoft 使用版本 4 算法:
With Windows 2000, Microsoft switched to version 4 GUIDs, since embedding the MAC address was viewed as a security risk. 1
您也可以从 .NET 中生成的 GUID 中看到这一点(来自维基百科):
版本 4 UUID 的格式为 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,其中 x 可以是任何十六进制数字,但 y 只能是 8、9、A 或 B 之一。例如f47ac10b-58cc-4372-a567-0e02b2c3d479。
版本 4 UUID 由 122 个有效位组成,给出 2^122 个不同的值,这是very大数字。给定一组H值,在找到有 50% 机会的第一次随机碰撞之前我们必须选择的预期值数量可以计算如下(参见生日袭击在维基百科上):
2^122 个不同值的结果(生日范围)约为 2,89e+18。这假设生成的值是随机分布的。显然,如果值分布不均匀,则可以更快地发现随机碰撞。欲了解更多详情,请参阅重复的随机 UUID 概率.
1As a matter of fact, the author of the Melissa worm could be tracked down due to a GUID generated using a version 1 algorithm.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)