UUID 生成器
生成随机的第 4 版 UUID,也称为 GUID,一次一个,或一次最多 100 个。它们来自浏览器的密码学安全随机生成器,在复制单个或全部之前,您可以切换为大写或去掉连字符。免费,无需注册,也不会将任何内容发送到服务器。
如何使用 UUID 生成器
- 1. 选择数量。 任意 1 到 100 之间的整数;默认为 5。
- 2. 点击“生成”。 每次都会出现一个新列表。在您按下按钮之前不会生成任何内容。
- 3. 选择格式。 “大写”和“无连字符”只会重新格式化您已有的列表,不会生成新的值。
- 4. 复制。 每一行都有自己的“复制”按钮,而“全部复制”会复制整个列表,每行一个 UUID。
第 4 版 UUID 的结构
UUID 是一个 128 位的标识符,写作 32 个十六进制数字,分为五组,组间用连字符分隔——8-4-4-4-12——共 36 个字符。该格式在 RFC 9562(2024 年)中定义,它取代了 RFC 4122。第 4 版几乎所有的位都由随机数据填充,只有六位是固定的:
| 部分 | 位置 | 值 |
|---|---|---|
| 版本 | 第三组的第一位数字 | 始终为 4 |
| 变体 | 第四组的第一位数字 | 8、9、a 或 b 之一 |
| 随机位 | 其余部分 | 122 位 |
一个示例,由本工具的随机性生成:e1f22e6e-ea3f-42a7-b43d-164b51542675。第三组以 4 开头,第四组以 b 开头,这是每个 v4 UUID 都必须遵守的。您的结果会不同,这正是重点。
两个 UUID 会发生冲突吗?
122 个随机位共有 2122 种可能的值,约为 5.3 × 1036。根据生日界限,要使任意两个相同的概率达到 50%,大约需要 2.7 × 1018 个 UUID。若每秒生成十亿个,则需要约 86 年。对于一般应用——数据库键、请求 ID、文件名——只要随机源可靠,冲突就不是实际问题。本工具使用浏览器的密码学生成器(crypto.randomUUID,并以 crypto.getRandomValues 作为后备),而不是 Math.random。
您需要哪个 UUID 版本?
| 版本 | 构成依据 | 典型用途 |
|---|---|---|
| 1 | 时钟时间(公历)和一个节点标识符 | 旧系统;可能暴露生成的时间和地点 |
| 3 和 5 | 命名空间与名称的哈希值(MD5 或 SHA-1) | 从名称派生的稳定 ID |
| 4 | 随机位 | 通用唯一 ID——本工具生成的版本 |
| 7 | Unix 毫秒时间戳,然后是随机位 | 按创建时间排序的数据库键 |
RFC 9562 指出,v4 的随机性会使数据库索引的局部性变差,并建议在基于时间的 ID 中使用第 7 版而非第 1 和第 6 版。如果您的表很大且插入频繁,按时间排序的 v7 可能更适合。本页只生成第 4 版。RFC 还指出,在可能的情况下,UUID 应以 16 字节的二进制形式存入数据库,因为文本形式需要 36 个字符。
格式:连字符、大小写与 GUID
RFC 9562 允许十六进制数字使用大写、小写或混合大小写,同一 UUID 无论大小写都是同一个标识符。标准文本形式带有连字符;不带连字符的 32 位数字形式是许多数据库和 API 都接受的常见变体,但在使用前请检查您的系统。GUID 是微软对同一 128 位标识符的称呼,因此本页生成的第 4 版 UUID 可用于任何需要 GUID 的地方。
常见问题
- 什么是第 4 版 UUID?
- 一个 128 位的通用唯一标识符,其中 122 位是随机的,其余六位标记版本(4)和变体。它的写法类似 550e8400-e29b-41d4-a716-446655440000。
- 两个生成的 UUID 会冲突吗?
- 理论上会,实际上不会。大约有 5.3 × 1036 种可能的值,而要使任何冲突的概率达到 50%,需要大约 2.7 × 1018 个 UUID,以每秒十亿个计,约需 86 年。
- 随机性是密码学安全的吗?
- 是的。本工具调用浏览器的 crypto.randomUUID,如果缺少该函数则调用 crypto.getRandomValues,两者都使用密码学安全的随机数生成器,而非 Math.random。
- 这些 UUID 是在服务器上生成的吗?
- 不是。它们在您的浏览器中生成,不会发送到任何地方,也不会被存储。再次生成会得到一组全新的列表。
- UUID 和 GUID 是同一回事吗?
- 是的。GUID 是微软对同一 128 位标识符的称呼。第 4 版 UUID 无需任何改动即可作为 GUID 使用;Windows 工具有时会以大写或花括号形式显示 GUID。
- “大写”和“无连字符”选项有什么作用?
- 它们只改变每个值的书写形式。大写会把十六进制字母变为大写,RFC 9562 将其视为同一个 UUID。无连字符会去掉破折号,得到 32 个字符;仅在接收系统要求这种形式时使用。
- 可以把 UUID 用作秘密或密码吗?
- 不可以。UUID 的设计目标是唯一,而非保密。RFC 9562 指出,实现不应假定 UUID 难以猜测,也不得将其用作安全凭证。保密信息请使用密码生成器。