代码之家  ›  专栏  ›  技术社区  ›  David Rutten

将URI转换为guid

  •  2
  • David Rutten  · 技术社区  · 15 年前

    将文件路径(uri)转换为System.guid的好方法是什么?我想尽量减少发生冲突的可能性,但是我很高兴有一个相当独特的散列(可能永远不会超过数据库中的几十个/一百个项目)。

    3 回复  |  直到 14 年前
        1
  •  8
  •   Vladislav Rastrusny    15 年前

    没有必要。hash-uri和md5或sha1等等。guid不用于散列。它们意味着独立于其他事物而被创造出来。

        2
  •  8
  •   Bradley Grainger    14 年前

    “正确”的方式(根据 RFC 4122 _§4.3)创建基于名称的UUID。这样做(而不仅仅是使用MD5散列)的好处是保证它们不会与非命名UUID发生冲突,并且与其他基于名称的UUID发生冲突的可能性非常小(非常小)。

    .NET框架中不支持创建这些内容,而是使用代码 similar to this ,您可以创建一个guid,如下所示:

    Guid guid = GuidUtility.Create(GuidUtility.UrlNamespace, filePath);
    

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

        3
  •  3
  •   Michael Ekstrand    15 年前

    如果您可以选择集中式注册表/数据库,则可以维护一个guid<->URL解析器,并为您需要的每个URL生成一个新的guid。这将按照预期的方式使用guid,从而最小化与本机生成的guid发生冲突的可能性。

    推荐文章