将URI转换为GUID

Dav*_*ten 2 c# hash uri guid

将文件路径(URI)转换为System.Guid的好方法是什么?我想尽量减少碰撞的可能性,但我很满意一个相当独特的哈希(数据库中可能永远不会超过几十/百项)

Vla*_*sny 8

没有必要.使用md5或sha1的哈希URI,这就是全部.GUID不适用于散列事物.它们意味着独立于其他一切而独特创造.


Bra*_*ger 8

"正确"的方式(根据RFC 4122第4.3节)是创建一个基于名称的UUID.这样做(仅使用MD5哈希)的优点是保证不会与非基于命名的UUID发生冲突,并且与其他基于名称的UUID发生冲突的可能性非常小(非常小).

.NET Framework中没有用于创建这些的本机支持,但通过使用与此类似的代码,您可以创建GUID,如下所示:

Guid guid = GuidUtility.Create(GuidUtility.UrlNamespace, filePath);
Run Code Online (Sandbox Code Playgroud)

为了进一步降低与其他GUID冲突的风险,您可以创建一个私有GUID以用作命名空间ID(而不是使用RFC中定义的URL命名空间ID).