跳到正文

UUID 生成

UUID Generator

批量生成 UUID v1、v4、v5 和 v7,并能从 v1 或 v7 的值里解出时间戳。

在浏览器里生成 UUID——v4 是纯随机,v7 用在你希望 id 按创建时间排序的时候,v5 和 v3 用在同样的输入必须永远给出同样的 id 的时候。它也能解码:粘一个 UUID,它读出版本、变体位,以及藏在 v1、v6 或 v7 里的时间戳。

🔒 完全在你的浏览器里运行uuidgeneratorid
版本

122 位随机。默认值,只要不需要排序,它就是答案。

生成几个

0个 UUID

    在这个标签页里用 `crypto.getRandomValues` 生成。不向服务器要任何东西,所以这些值没有第二个人见过。

    拆开一个 UUID

    粘贴任意 UUID,可以读出版本、变体位,以及 v1、v6 和 v7 里面藏着的时间戳。

    版本位和变体位遵循 RFC 9562,并拿它附录 A 的实例对过。v1 和 v6 的节点 id 是置了多播位的随机数——浏览器没有 MAC 地址可泄。

    怎么用

    1. 选版本

      没有理由就用 v4。有理由的话通常是排序——v7 的前几位带着 Unix 毫秒数,以它为键的表会保持插入顺序,索引不会碎片化。

    2. 设置格式

      大写、连字符,以及 Windows 和 .NET 用的 `{…}` 花括号。这些只改文本,从不改底下那 128 位。

    3. v3 和 v5 要给命名空间和名字

      这两个版本对这一对做哈希,所以同一个 DNS 命名空间配 `www.example.com` 永远得到同一个 UUID——在任何地方、任何时候。这就是它们的意义,也是它们不随机的原因。

    4. 复制整批,或检查其中一个

      「全部复制」拿走整个列表;某一行旁边的「检查」把它载入解码面板,那里还会打印出 16 个原始字节。

    常见问题

    这些随机到能当令牌用吗?

    v4 有 122 个来自 `crypto.getRandomValues` 的随机位,那是真正的 CSPRNG——和任何 122 位的秘密一样不可猜。但 v1、v6 或 v7 大部分是时间戳,v3 或 v5 是对别人也许猜得到的输入做的哈希。只有 v4 不可预测。

    v1 会泄露我的 MAC 地址吗?

    在这里不会。最初的 v1 用的是网卡地址,这个版本的名声就是这么来的。浏览器接触不到网卡,所以节点字段是随机的并置上多播位——这正是规范为这种情况留的出口。

    为什么一批 v5 UUID 不是全都一样?

    因为每一行都在名字后面追加了一个序号——否则一批十个就是同一个值打印十次,正确但没用。如果你要的是你那个名字精确的哈希,一次只生成一个。

    UUID 适合做主键吗?

    v7 通常适合;v4 通常不适合。随机键把插入打散到整棵 B 树上,让索引碎片化,在大表上是能测出来的。如果你已经在用 v4 并且吃到了苦头,v7 就是大家迁移的方向。

    可以从这些接进来

    接下来

    这些工具吃得下当前工具的产出,结果可以直接送过去。