UUID 生成器 — 在线创建随机 UUID

这个 UUID 生成器使用 Web Crypto API 创建随机 UUID v4 值。可单个或批量生成 UUID,支持五种格式:标准、无连字符、大写、大括号和 URN。验证已有 UUID 以检查其版本、变体和 RFC 4122 字段分解。

UUID 生成器

生成随机 UUID v4 值或验证已有 UUID

1

常见问题

什么是UUID?

UUID(通用唯一标识符)是RFC 4122标准化的128位标识符。它以用连字符分隔的五组32个十六进制数字(8-4-4-4-12)表示。UUID设计为无需中央注册机构即可全局唯一,使其成为分布式系统、数据库和软件开发的理想选择。

UUID v4和v1有什么区别?

UUID v1由时间戳和主机MAC地址生成,提供时间排序但暴露主机身份。UUID v4使用随机或伪随机数生成,提供122位随机性。V4是使用最广泛的版本,因为它易于生成,没有隐私顾虑,并提供出色的唯一性保证。

UUID v4发生碰撞的概率是多少?

UUID v4具有122个随机位,产生约5.3×10³⁶个可能值。生成重复值的概率极小:您需要生成约2.71×10¹⁸(27.1京)个UUID才有50%的机会产生单次碰撞。实际上,以每秒10亿个UUID的速度生成85年,只有50%的概率产生一次重复。

UUID和GUID有什么区别?

UUID(通用唯一标识符)和GUID(全局唯一标识符)指的是相同的概念——128位唯一标识符。UUID是RFC 4122和大多数开源生态系统中使用的术语,而GUID是Microsoft在Windows和.NET中使用的术语。两种格式在功能上相同,尽管GUID有时以花括号显示。

我应该将UUID用作数据库主键吗?

UUID在多个节点独立生成ID的分布式数据库中效果良好。它们消除了对集中式自增序列的需求。但标准UUID v4值是随机的,可能导致B树索引碎片化,与顺序ID相比插入性能较慢。考虑使用UUID v7(时间排序)或ULID以获得更好的数据库性能。

UUID占多少字节?

UUID正好是16字节(128位)。以标准格式(8-4-4-4-12,带连字符)存储为字符串时,需要36个字符(32个十六进制数字+4个连字符)。为了存储效率,PostgreSQL等数据库具有原生UUID类型,将UUID存储为16字节而不是36字节字符串。

UUID适合用作令牌和密钥吗?

使用密码学安全随机数生成器(如crypto.randomUUID())生成的UUID v4提供122位随机性,足以用于会话令牌和CSRF令牌。但UUID并非设计为密钥——它们旨在唯一,而非不可预测。对于API密钥或认证令牌,使用专门构建的库来生成密码学安全的随机字符串。

应该使用哪种UUID格式?

标准连字符格式(8-4-4-4-12)是最常见且最具互操作性的。当存储空间很重要或需要URL友好标识符时,使用无连字符格式。对于Microsoft COM/DCOM兼容性,使用花括号格式({...})。在URN命名空间或XML文档中嵌入UUID时,使用URN格式(urn:uuid:...)。

我可以离线生成UUID吗?

可以。UUID v4只需要一个随机数来源,所有现代设备都可通过操作系统或浏览器获得。本工具使用Web Crypto API(crypto.randomUUID())完全在您的浏览器中生成UUID。不发出服务器请求,您的设备上的数据不会离开。

有哪些不同的UUID变体?

UUID中的变体字段(UUID的第64-65位)标识UUID的布局。最常见的是RFC 4122(变体1,以"10"的两个最高有效位表示)。其他变体包括NCS向后兼容(变体0)、Microsoft COM/DCOM(变体2)和供将来使用的保留变体。本工具生成的所有UUID都使用RFC 4122变体。

关于 UUID / GUID

UUID(通用唯一标识符)是由 RFC 4122 标准化的 128 位标识符,设计为无需中央注册机构即可在所有系统中保持唯一性。在微软生态系统中,UUID 通常被称为 GUID(全局唯一标识符)。UUID 广泛用于数据库、分布式系统、API 和软件开发中,用于在各方无需协调的情况下标识资源。

标准 UUID 以连字符分隔的五组 32 个十六进制数字表示:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx,其中 M 表示版本,N 表示变体。

UUID 各版本说明

UUID 规范定义了多个版本,每个版本采用不同的生成方式:

版本名称说明
v1基于时间由时间戳和主机 MAC 地址生成,支持时间排序,但会暴露主机身份。
v2DCE 安全类似 v1,但加入了 POSIX UID/GID。实际场景中除 DCE 环境外很少使用。
v3基于命名空间(MD5)通过对命名空间和名称进行 MD5 哈希生成的确定性 UUID,相同输入始终产生相同 UUID。
v4随机使用随机或伪随机数生成,因其简单性和强唯一性保证而成为使用最广泛的版本。本工具生成 v4 UUID。
v5基于命名空间(SHA-1)与 v3 类似,但使用 SHA-1 而非 MD5,适用于需要确定性 UUID 的新应用程序,优先于 v3。

UUID 格式与结构

UUID 由 128 位(16 字节)组成,以标准形式 8-4-4-4-12 表示为 32 个十六进制数字。根据 RFC 4122,各字段定义如下:

字段十六进制位数说明
time_low8时间戳的低 32 位
time_mid4时间戳的中间 16 位
time_hi_and_version4高 4 位为版本号,低 12 位为时间戳
clock_seq4变体(2–3 位)和时钟序列(13–14 位)
node1248 位节点标识符(v1 中通常为 MAC 地址)

对于 UUID v4,除版本位和变体位外,所有字段均填充随机数据,提供 122 位随机性。

UUID 与 GUID 的区别

UUID 和 GUID 指的是相同概念——128 位唯一标识符。UUID 一词来自 RFC 4122 标准,在 Linux、macOS 及大多数编程语言中使用;GUID(全局唯一标识符)一词由微软提出,广泛用于 Windows、.NET 和 COM 开发。两者的主要区别如下:

  • 命名约定 — RFC 标准和大多数开源项目使用 UUID;微软文档使用 GUID
  • 格式表示 — GUID 有时以大括号形式显示:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
  • 字节顺序 — 微软的 GUID 结构内部使用混合端字节序,而 RFC 4122 UUID 使用网络字节序(大端序)

常见使用场景

  • 数据库主键 — UUID 可作为全局唯一主键,由任意节点独立生成,无需自增序列或中央 ID 服务器
  • 分布式系统 — 微服务、消息队列和事件驱动架构使用 UUID 标识消息、事务和关联 ID,无需协调
  • 会话令牌 — Web 应用使用 UUID 作为会话标识符、CSRF 令牌和临时访问密钥,其随机性使其难以预测
  • API 资源标识符 — RESTful API 在 URL 中暴露 UUID(例如 /api/users/550e8400-e29b-41d4-a716-446655440000),避免顺序 ID 枚举攻击
  • 文件与对象存储 — 云存储服务使用 UUID 命名数据块、文件和对象,防止跨租户命名冲突
  • 设备与组件标识 — 蓝牙、USB 及其他硬件协议使用 UUID 标识服务和特性

相关工具

相关工具