c# - 比较基于散列的 GUID 与“Guid.NewGuid()”时是否有更大的碰撞机会?

标签 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 生成的两个 GUID。 NewGuid())?

最佳答案

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

以某种方式构造 guid 并不能实际降低碰撞风险。随机生成的 guids 的碰撞几率非常低,即使是火星探测器也可以保证不会发生这种情况。

MD5 是一种损坏的算法,我不会将其称为加密强度高的算法。我不明白为什么人们仍然使用 MD5。这不是破解10年后的常识吗?!考虑使用 SHA256 并将输出截断为 128 位。

关于c# - 比较基于散列的 GUID 与“Guid.NewGuid()”时是否有更大的碰撞机会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35701564/

相关文章:

c# - (最佳实践)FluentValidation 和检查重复实体

c# - 如何使用 LINQ-to-Wiki 从维基百科获取所有城市页面?

C# : Convert datetime from string with different format

asp.net-mvc - 使用部分GUID作为ID

c# - LINQ 过滤器列表并排除 MAX 值

c# - 使用远程验证的多字段验证

go - 如何以特定模式生成 UUID

delphi - 如何从TGUID获取接口(interface)类型信息?

sql - 为什么 IDENTITY 优于 GUID 作为数据仓库的主键?

c - D3DKMTOpenAdapterFromDeviceName 和 DeviceName