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

时间:2016-02-29 14:02:43

标签: c# guid

Is there a greater chance to collide when comparing GUIDs created differently?的后续行动。

我有这样的事情:

using( MD5 md5 = MD5.Create() ) {
    var hash = md5.ComputeHash( foo );
    var hashguid = new Guid( hash );
}

这可以保证相同的foo会导致GUID冲突,并允许过滤foo的重复项。

是否有任何问题hashguid更有可能与使用Guid.NewGuid()生成的GUID发生冲突(与Guid.NewGuid()生成的两个GUID相比)?

1 个答案:

答案 0 :(得分:0)

与哈希输入的冲突机会相比,密码强哈希算法不会显着增加冲突的可能性。这很安全。

通过以某种方式构建指南,没有实际降低碰撞风险。随机生成的guid的碰撞几率非常低,即使是火星漫游者也可以依靠它不会发生。

MD5是一个破碎的算法,我不会称之为密码强。我不明白为什么人们仍然使用MD5。在破裂10年后,这种常识不是吗?!考虑使用SHA256并将输出截断为128位。