比较不同创建的 GUID 时是否有更大的机会发生冲突?
Is there a greater chance to collide when comparing GUIDs created differently?
如果我使用构造函数(例如,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()?
如果 "myguid" 值是由合法的 GUID 生成器创建的,则机会均等。
使用 newest GUID generator on Windows,这几乎是一个安全的随机数生成器,猜测下一个数字并将其传递给 new Guid("myguid")
的概率几乎是不可能的。
这与旧版生成器不同,GUID 可以追溯到创建它的硬件。那时你可以对生成 GUID 的过程进行逆向工程,并尝试故意传递一个冲突的 GUID。
真正的答案是视情况而定。 Guid.NewGuid creates it based on several factors described here。如果您从 NewGuid
获取创建它的字符串表示形式并将其放入构造函数中,那么机会与调用 NewGuid
两次相同。
话虽这么说,但并非所有 GUID 都是一样的。不同的系统有不同的生成方式,并且它们可能不像 .NET 实现那样具有抗冲突性。没有什么可说的,我无法创建一个可以解析为不基于任何规则的 GUID 的字符串。此 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()?
如果 "myguid" 值是由合法的 GUID 生成器创建的,则机会均等。
使用 newest GUID generator on Windows,这几乎是一个安全的随机数生成器,猜测下一个数字并将其传递给 new Guid("myguid")
的概率几乎是不可能的。
这与旧版生成器不同,GUID 可以追溯到创建它的硬件。那时你可以对生成 GUID 的过程进行逆向工程,并尝试故意传递一个冲突的 GUID。
真正的答案是视情况而定。 Guid.NewGuid creates it based on several factors described here。如果您从 NewGuid
获取创建它的字符串表示形式并将其放入构造函数中,那么机会与调用 NewGuid
两次相同。
话虽这么说,但并非所有 GUID 都是一样的。不同的系统有不同的生成方式,并且它们可能不像 .NET 实现那样具有抗冲突性。没有什么可说的,我无法创建一个可以解析为不基于任何规则的 GUID 的字符串。此 GUID 发生冲突的可能性要大得多。