如果我使用构造函数(例如,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()?
答案 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。