比较创建不同的GUID时是否有更大的机会发生冲突?

时间:2016-02-26 21:18:32

标签: c# guid

如果我使用构造函数(例如,Guid myGuid = new Guid("myguid"))创建GUID,那么它与使用Guid.NewGuid()创建的GUID与创建的两个GUID相冲突的可能性更高与Guid.NewGuid()

编辑:

更具体的问题:Is there a greater chance to collide when comparing GUIDs based on a hash vs "Guid.NewGuid()?

3 个答案:

答案 0 :(得分:1)

真正的答案取决于它。 Guid.NewGuid根据here描述的几个因素创建它。如果你从NewGuid获取创建它的字符串表示并将它放在构造函数中,那么机会与调用NewGuid两次相同。

话虽如此,并非所有GUID都是平等的。不同的系统有不同的生成方式,它们可能不像.NET实现那样具有抗冲突性。没有什么可说的,我无法创建一个可以解析为不基于任何规则的GUID的字符串。此GUID将有更大的碰撞机会。

答案 1 :(得分:0)

如果“myguid”值是由合法的GUID生成器创建的,那么它是一个平等的机会。

答案 2 :(得分:0)

使用newest GUID generator on Windows,它几​​乎是一个安全的随机数生成器,猜测下一个数字并将其传递给new Guid("myguid")的概率几乎是不可能的。

与旧的生成器不同,当GUID可以追溯到创建它的硬件时。那时你可以对生成GUID的过程进行逆向工程,并尝试有目的地传递一个碰撞的GUID。