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

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

编辑:

更具体的问题: 在比较基于哈希的GUID与“Guid.NewGuid()”时,是否有更大的机会发生冲突?

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

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

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

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

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