UUID生成器

添加到网站 元信息

其他工具

生成UUID/GUID

生成UUID/GUID

通用唯一标识符(UUID),也称为全局唯一标识符(GUID),已广泛应用于计算机系统中。

它是系统根据变量和常量生成的 128 位代码:当前时间、MAC 地址、SHA-1 哈希值、MD5 命名空间。 生成 UUID 的最终结果显示为由连字符分隔的 32 个字符的字母数字代码,看起来可能是任意的,但实际上它是复杂计算的结果。 因此,计算机并不是“发明”代码,而是根据给定时间相关的特定技术量形成代码。

不同时间在两台不同计算机上生成相同 UUID 的概率趋于零,这使得无需参考协调中心即可使用生成的代码进行点/本地数据识别。 如今,UUID/GUID 在在线和离线网络中无处不在,不仅在全球互联网空间中有效工作,而且在独立计算机系统中也有效工作。

UUID 历史记录

128 位 UUID 代码最早由美国阿波罗计算机公司在 20 世纪 80 年代使用。 它们基于域/操作系统中使用的更简单的 64 位代码,并在开放软件基金会计算环境中得到广泛使用。

随着第一个 Windows 平台的出现,全局唯一标识符得到了通用化和标准化。 微软采用了Apollo Computer的DCE设计,并在RFC 4122中注册了URN命名空间。2005年,后者被IETF提出作为新标准,UUID在ITU内部得到标准化。

2002 年初,在使用 UUID 作为本地数据库中的主键时发现了系统性能问题。 这些问题在版本 4 中通过添加基于计算机系统时间的非随机后缀进行了修复。 所谓的COMB(组合GUID时间标识符)方法增加了代码重复的风险,但同时显着提高了与Microsoft SQL Server一起使用时的性能。

随着IT技术的发展,通用唯一标识符不再是一个高度专业化的技术工具,而是到了今天每个人都可以使用它。 生成的代码的重复概率并不等于零,而是趋于零,任何数字信息都可以被它们识别,之后它们可以组合成单个数据数组,重复风险最小。

UUID 的好处

全球唯一代码的生成器不需要集中的数据协调/同步,并且可供所有用户免费使用。 UUID的主要优点包括:

  • 代码“冲突”(重复)的风险极小。 尽管它们被大量使用,但重复的概率趋于零。
  • 能够使用 UUID 作为主(唯一)键来连接不同的数据数组。
  • 简化数据在多个分散服务器之间的分发。
  • 能够离线生成代码。

以 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 格式编写的唯一识别码允许分散的系统无需来自单个数据中心的协调即可识别信息:错误/重复的概率几乎为零。 这一特性,加上易用性和对计算机性能的低要求,使得 UUID 在各种 IT 行业和自主计算系统中受到需求和不可或缺。

通用唯一标识符

通用唯一标识符

UUID可以使用不同的算法和变量/常量值生成代码。

标识符总共有 5 个版本,使用系统日期/时间和 MAC 地址、DCE 安全协议、MD5 哈希、SHA-1 哈希和生成时的命名空间。

在所有情况下,最终结果均以 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 格式显示(十六进制数字,由小写拉丁字母和数字组成,并用连字符分为五个块:8-4 -4-4- 12),M代表版本,N代表UUID变体。

因此,系统一次使用 36 个字符(26 个字母和 10 个数字),因此重复 32 位代码的概率趋于零,尽管它们每天都是由世界各地数百万用户生成的。

UUID 版本

版本 1

第一个版本的唯一标识符在生成代码时基于计算机的 MAC 地址及其系统时间,每秒更改其数值 1 次。 生成过程由五个阶段组成:

  • 低 32 位信息取自 UTC 标签。 转换为8个十六进制字符,占用4个字节。
  • 平均16位信息取自同一个UTC标签,转换为4个十六进制字符,占用2个字节。
  • 获取 UTC 标记的高 12 位信息并将其转换为另外 4 个十六进制字符。
  • 另外 1-3 位落在时钟序列上,通过引入一定程度的随机性/不确定性来降低冲突风险。 系统时间有条件地减慢或向后设置 - 以便同时在同一台计算机上工作的两个或多个标识符不会“交叉”。
  • 剩下的 6 个字节是根据设备的 MAC 地址生成的常量值。 它由 12 个十六进制字符组成,大小为 48 位。

由于第一版UUID的算法与系统时间有着千丝万缕的联系,因此时钟序列的使用是强制性的。 否则,在系统时间“冻结”在一个或另一个值的那一秒内,生成相同代码的风险会增加很多倍。

版本 2

第二个版本与第一个版本略有不同,并且在实践中很少使用。 它使用与用户数据或其他在其他计算机上不重复或很少重复的唯一值相关联的系统标识符,而不是时钟序列。 第二个版本中随机性的影响被最小化,可以用来提高分布式计算环境的安全性。

版本 3 和 5

它们有很多共同点:它们使用唯一的名称和名称(来自 MD5 空间)来创建代码,即非随机值。 只有版本 3 使用标准哈希,而版本 5 使用 SHA-1 哈希。 此类标识符对随机变量的依赖性较小。

版本 4

这个UUID版本的生成是90%以上随机的。 常量值有 6 位,任意值有 122 位。算法的实现是首先随机生成 128 位信息,其中 6 位被版本和变体数据替换。

第四个版本中伪随机数生成器的作用是最大的,如果算法过于简单,重复/冲突的风险会显着增加。 尽管如此,第四个版本是迄今为止最常见且在实践中最常用的版本。

UUID 选项

随着计算机技术的发展,独特的UUID已经过多次完善,如今它有多个版本。

选项0

设计用于与旧版 Apollo 网络计算系统 1.5 1988 格式数据库配合使用。 此选项向后兼容它们,并且不会与 NCS 历史 UUID 冲突。

选项 1 和 2

用于标识现代数据块和数组,在规范文本形式中,除了写入变体位的顺序之外,它们彼此没有区别。 因此选项 1 使用 big-endian 字节顺序,选项 2 使用 title-endian。 第一个是主要的,第二个是为使用 Microsoft Windows 的早期 GUID 而保留的。

选项 3

目前未使用。 它是一个保留版本,供将来使用 - 当以前的选项的可能性用尽时。

大多数系统都以大尾数法对标识符进行编码,但也有例外。 例如,Microsoft COM/OLE 库中的封送处理使用混合字节序,同时从标题字节序和大字节序块生成代码。 第一个是 UUID 的前三个组成部分,第二个是最后两个组成部分。