1
161
正如@bacar所说, RFC 4122 §4.3定义了创建基于名称的UUID的方法。这样做的好处(相对于只使用MD5散列)是保证这些uuid不会与非命名的uuid发生冲突,并且与其他基于名称的uuid发生冲突的可能性非常(非常)小。 在.NET框架中没有本机支持来创建这些,但是我发布了 code on GitHub
为了进一步降低与其他GUID冲突的风险,可以创建一个私有GUID用作名称空间ID(而不是使用RFC中定义的URL名称空间ID)。 |
2
31
这将把任何字符串转换成Guid,而不必导入外部程序集。
有更好的方法来生成唯一的Guid,但这是一种将字符串数据键一致升级为Guid数据键的方法。 |
3
21
正如Rob提到的,您的方法不会生成UUID,而是生成一个看起来像UUID的散列。 RFC 4122 在UUID上特别允许确定性(基于名称的)UUID—版本3和版本5分别使用md5和SHA1。大多数人可能都熟悉版本4,它是随机的。 Wikipedia 提供了一个很好的版本概述(请注意,这里使用的“version”一词似乎描述了UUID的一种“类型”——版本5并不取代版本4)。 似乎有一些库用于生成版本3/5uuid,包括 python uuid module , boost.uuid (C++)和 OSSP UUID |
4
3
您需要区分类的实例
因此,您的方法的问题是,您必须确定两个不同的路径将产生相同的GUID的可能性。如果您需要一个对于任何给定的路径字符串都是唯一的标识符,那么最简单的方法就是 用绳子就行了 加密它 -你可以用ROT13或者更强大的东西。。。
|
5
1
MD5很弱,我相信你可以用SHA-1做同样的事情,得到更好的结果。 顺便说一句,仅仅是个人观点,把md5散列装扮成GUID并不能使它成为一个好的GUID。guid本质上是不确定的。这感觉像是作弊。为什么不直截了当地说它是输入的字符串散列呢。您可以使用此行而不是新的guid行:
|
Lechucico · BLE从特性接收GATT通知 6 年前 |
Baek Ryun · 核心蓝牙使用数据创建CBUUID 7 年前 |
Jacob Boddey · 在PHP中从MongoDB获取UUID 7 年前 |
xiekuan · 如何在C中打印ext2超级块的s_uuid 7 年前 |
Alex · 如何在python中生成相同的uuid序列?[副本] 7 年前 |
Basil Bourque · java.util。UUID实习/回收 7 年前 |
Arivazhagan L · 如何在Java中创建唯一Id 7 年前 |