返回

UUID / GUID 生成器

工具介绍

UUID 是 128 位的标识,常写成 8-4-4-4-12 的十六进制。这个页面一次可以生成多条,用来填测试数据或做临时主键。v4 来自浏览器的随机数。不要把页面上的 v1 选项当成 RFC 4122 的时间戳 UUID。

v4 优先调用 crypto.randomUUID()。标准写法里,第三段的第一个十六进制字符是版本号 4,第四段的第一个字符是 8、9、a 或 b。勾选去掉连字符、转大写、加花括号时,页面在生成之后做这三步字符串处理。v1 选项只是把 Date.now() 拆进前三段并在开头标上版本位 1,时钟序列和节点都是另外的随机字节,布局也不符合 RFC 4122,不能按时间排序,也不能和别的系统的 v1 互认。

计算示例

  1. 输入:对 550e8400-e29b-41d4-a716-446655440000 依次去掉连字符、转大写、加花括号

    输出:{550E8400E29B41D4A716446655440000}。第三段的 4 表示这一条是版本 4

  2. 输入:版本选 v4,数量 1,保留连字符,小写,不要花括号

    输出:一条新的 8-4-4-4-12 小写 UUID。每次点击都不同,不能期望得到上一条示例里的那个固定值

  3. 输入:版本选 v1

    输出:第一段以 1 开头的十六进制,后面夹着当前毫秒时间的片段和随机字节。这不是可移植的标准 v1

使用限制

  • v4 的具体文本无法事先写死,只能保证格式和版本位。碰撞在实际数量下可以忽略,但页面没有去重。
  • 数量很大时会在主线程里循环生成,浏览器可能短暂卡住。
  • 没有名字空间,因此没有 UUID v3 或 v5。

常见错误

  • 把 v1 结果交给要求 RFC 4122 版本位位于第三段的系统。这个页面的 v1 把版本字符放在开头。
  • 去掉连字符后又按 8-4-4-4-12 去切。存储格式要和读取方约定一致。
  • 用生成结果当密码。它的字符集只有十六进制,熵低于同长度的大小写加符号密码。

常见问题

550e8400-e29b-41d4-a716-446655440000 里哪个字符是版本?▾
第三段 41d4 的 4。变体位在下一段 a716 的 a。
花括号是 UUID 的一部分吗?▾
不是。那是一些 Windows API 的写法。勾选后只是在外面加一层 { }。
刷新页面还会看到刚才的结果吗?▾
不会。结果只留在当前页面的内存里,下载文件要自己保存。

相关工具