通用唯一识别码(英语:Universally Unique Identifier,缩写:UUID)是用于计算机体系中以识别信息的一个128位标识符。
UUID按照标准方法生成时,在实际应用中具有唯一性,且不依赖中央机构的注册和分配。UUID重复的概率接近零,可以忽略不计。
因此,所有人都可以自行创建和使用UUID,而且几乎可以确定其不会与既有的标识符重复。也因为如此,在不同地方产生的UUID可以使用于同一个数据库或同一个频道中,而且几乎不可能重复。
格式
在其规范的文本表示中,UUID 的 16 个 8 位字节表示为 32 个十六进制数字,由连字符 ‘-’ 分隔成五组显示,形式为“8-4-4-4-12”
总共 36
个字符(32 个十六进制数字和 4 个连字符)。
例如:
123e4567-e89b-12d3-a456-426655440000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
四位数字M表示 UUID 版本,数字 N的一至三个最高有效位表示 UUID 变体。在例子中,M 是 1 而且 N 是 a(10xx2),这意味着此 UUID 是“变体1”、“版本1”UUID;即基于时间的 DCE/RFC 4122 UUID。
规范的 8-4-4-4-12
格式字符串基于 UUID 的16个字节的“记录布局”:
UUID 记录结构
名称 | 长度 (字节) | 长度(16进制数字码长) | 说明 |
---|---|---|---|
time_low | 4 | 8 | 整数:低位 32 bits 时间 |
time_mid | 2 | 4 | 整数:中间位 16 bits 时间 |
time_hi_and_version | 2 | 4 | 最高有效位中的 4 bits“版本”,后面是高 12 bits 的时间 |
clock_seq_hi_and_res clock_seq_low | 2 | 4 | 最高有效位为 1-3 bits“变体”,后跟13-15 bits 时钟序列 |
node | 6 | 12 | 48 bits 节点 ID |
这些字段对应于“版本1”和“版本2”(基于时间的)UUID中的字段,但是“8-4-4-4-12”
的表示适用于所有UUID,即使对于生成方式不同的UUID也是如此。
RFC 4122 第 3 节要求以小写形式生成字符,同时对输入不区分大小写,尽管一些常用的实现违反了此规则。
Microsoft GUID有时会以大括号表示:
{123e4567-e89b-12d3-a456-426655440000}
不应将此格式与“Windows注册表格式”相混淆,后者指的是大括号内的格式。
RFC 4122为UUID定义了统一资源名称(URN)名字空间。作为URN呈现的UUID如下:
urn:uuid:123e4567-e89b-12d3-a456-426655440000
版本
版本1(日期时间和MAC地址)
版本2(日期时间和MAC地址,DCE安全版本)侵犯用户隐私
版本3和版本5(基于名字空间名称)
版本4(随机)
摘自:https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E5%94%AF%E4%B8%80%E8%AF%86%E5%88%AB%E7%A0%81