4

我想知道,创建 GUID 的内容是什么。我的意思不是用于以特定语言创建 GUID(SQL Server 中的 NewID(),C# 中的 Guid.NewGuid()),我的意思是当您调用这些方法/函数时,它们会做什么来制作图形用户界面?

4

6 回答 6

3

此外,RFC 4122(在 Wikipedia 文章中引用)描述了应该如何构建 GUID。

于 2008-09-17T20:16:28.123 回答
2

wikipedia上描述了 GUID 的详细信息,包括用于生成它们的算法。

于 2008-09-17T20:14:32.060 回答
1

简而言之,它一点也不复杂。GUID(或 UUID)版本 4(当前)是一个部分随机数,简单明了(128 位中有 122 位是随机的,其余用于存储版本和修订)。诀窍是这个数字的可能值非常多,以至于对于大多数实际目的来说,命中的概率为零

于 2008-09-17T20:40:46.800 回答
0

哈希函数。情况很复杂。

http://en.wikipedia.org/wiki/GUID#Algorithm比我知道的多。

于 2008-09-17T20:15:08.283 回答
0

请注意,您在 Internet 上阅读的有关 GUID 创建的大量内容很可能是错误的,或者至少对于您的特定平台来说已经过时了。

我曾经单步执行一堆 Windows 代码来解决有关在 WinXP 上创建 GUID 的争论。不幸的是,事实证明我错了(即我失去了论点),但拉里奥斯特曼也是如此,所以我对此感觉稍微好一些。

于 2008-09-17T20:21:58.593 回答
0

生成 GUID 的官方方法有五种(当然还有更多非官方方法)。

  • 版本 1 是基于时间的 GUID,通常使用用于计算 GUID 的主网卡的 MAC 地址。由于隐私问题,这通常不使用,但我确实相信 2005 年及以后的 Microsoft SQL Server 使用此版本的修改版本(声称是版本 14),以创建对数据库中的 id 有用的顺序 GUID,以避免分割数据块 (NewSequentialId())。

  • 版本 2 是 DCE 安全版本。我从来没有找到过这种 GUID,但我也没有经常使用 POSIX,而且版本 2 GUID 和 POSIX 之间似乎存在联系。

  • 版本 3 是“基于名称”的版本,这意味着您可以获取一个文本并创建一个 GUID 表示,给定一个命名空间。版本 3 使用 MD5 散列算法。另见版本 5。

  • 版本 4 基本上是一个随机数类型的 GUID。随机数具有顺序级别,而不仅仅是您的平均随机数生成器。这是当今世界上通常使用的版本。根据 Microsoft 文档,C# Guid.NewGuid() 使用此版本。此外,用于在 MS SQL Server (NewId()) 中生成唯一标识符的常规函数​​会生成版本 4 GUID。

  • 版本 5 与版本 3 类似,但使用 SHA-3 散列算法。扩展的guid C# 项目使用版本 5 算法。

对于 GUID 制作的一种实现,我建议查看扩展的 guid 项目。正如许多人指出的那样,RFC 4122详细描述了所有五种算法的工作原理。但是,不能保证所有实现都是正确的。

于 2013-08-19T14:56:10.273 回答