跳转到正文

UUID 生成器

生成随机的第 4 版 UUID,也称为 GUID,一次一个,或一次最多 100 个。它们来自浏览器的密码学安全随机生成器,在复制单个或全部之前,您可以切换为大写或去掉连字符。免费,无需注册,也不会将任何内容发送到服务器。

如何使用 UUID 生成器

  1. 1. 选择数量。 任意 1 到 100 之间的整数;默认为 5。
  2. 2. 点击“生成”。 每次都会出现一个新列表。在您按下按钮之前不会生成任何内容。
  3. 3. 选择格式。 “大写”和“无连字符”只会重新格式化您已有的列表,不会生成新的值。
  4. 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——本工具生成的版本
7Unix 毫秒时间戳,然后是随机位按创建时间排序的数据库键

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 难以猜测,也不得将其用作安全凭证。保密信息请使用密码生成器。

相关工具

数据、标记语言与代码中的更多工具