UUID 生成器 — 在线创建随机 UUID
这个 UUID 生成器使用 Web Crypto API 创建随机 UUID v4 值。可单个或批量生成 UUID,支持五种格式:标准、无连字符、大写、大括号和 URN。验证已有 UUID 以检查其版本、变体和 RFC 4122 字段分解。
UUID 生成器
生成随机 UUID v4 值或验证已有 UUID
常见问题
什么是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 地址生成,支持时间排序,但会暴露主机身份。 |
| v2 | DCE 安全 | 类似 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_low | 8 | 时间戳的低 32 位 |
| time_mid | 4 | 时间戳的中间 16 位 |
| time_hi_and_version | 4 | 高 4 位为版本号,低 12 位为时间戳 |
| clock_seq | 4 | 变体(2–3 位)和时钟序列(13–14 位) |
| node | 12 | 48 位节点标识符(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 标识服务和特性
相关工具
- 密码生成器 — 生成具有可自定义长度和字符集的安全随机密码
- 随机数生成器 — 在任意范围内生成随机整数和浮点数
- Base64 编码/解码 — 对 Base64 字符串进行编码和解码,用于数据传输