生成器

UUID 生成器

生成随机版本 4 的 UUID(GUID)。

给这个工具评分

如何使用 UUID 生成器

  1. 选择你需要多少个 UUID。
  2. 点击"生成"。
  3. 复制结果。

关于 UUID 生成器

UUID 是一个 128 位标识符,写成由五组用短横线分隔的 32 位十六进制数字。此工具生成版本 4 的 UUID——也就是随机类型——优先使用你浏览器的 crypto.randomUUID(),在不支持时回退到 crypto.getRandomValues()。两者使用的是同一个密码学安全随机源,并完全在页面本地运行;不会向服务器发送任何数据。你可以一次生成最多 100 个。

128 位中有 6 位被固定,用于标记版本和变体,剩下 122 位是随机的。这个数字正是该格式的关键所在。它大到足以让两个独立生成的 v4 UUID 发生碰撞的概率,在实际中被视为可以忽略不计——因此任意数量的机器都可以同时、离线地生成标识符,而无需向中央数据库请求下一个可用值。不需要协调,不需要往返请求,也不存在单点故障。

这里有两点需要诚实说明。UUID 不是秘密——它被设计为独一无二,而不是被设计为隐藏起来的,UUID 经常被记录在日志中并嵌入 URL 里,所以永远不要仅凭一个 UUID 就当作会话令牌来使用;这种场景请使用密码生成器。而且,v4 UUID 正因为是随机的,所以并不适合作为聚簇主键:插入操作会分散到索引的各个位置,而不是在末尾追加,这会导致页面碎片化并损害写入性能。正是这一权衡,后来催生了按时间排序的标识符方案。

常见问题

什么是版本 4 UUID?

一种由随机数据生成的 UUID。它的 128 位中有 6 位被固定,用于标识版本和变体,其余 122 位是随机的。它是用于通用场景最常见的 UUID 类型。

两个 UUID 会不会碰巧相同?

理论上可能,但这不是需要特意防范的事情。凭借来自安全生成器的 122 个随机比特,发生碰撞的概率小到足以让全世界的系统在没有任何中央协调的情况下独立生成 UUID。

UUID 可以安全地用作安全令牌吗?

不可以。UUID 被设计为独一无二,而不是保密——它们经常被记录、放入 URL 并被共享。任何授予访问权限的场景都应使用专门设计的随机令牌。

UUID 和 GUID 是同一回事吗?

实际上是的。GUID 是微软对同一种 128 位标识符格式的称呼。

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

可以用,但随机的 v4 UUID 会把插入操作分散到聚簇索引各处,而不是按顺序追加,这会在大表上损害写入性能。按时间排序的标识符方案正是为了解决这个问题而存在的。