生成 UUID

UUID 生成说明

使用教程

先在下拉里选定一次要出多少条,只有 10、20、30、40、50 五档,避免一次刷出太多不好核对。点生成后,每条 UUID 占一张卡片。卡片上可以单条复制;列表上方还能一次复制全部,条目之间用换行隔开,适合直接贴进表格或配置文件。

刷新或关掉标签后,列表不会回来。页面不写本地存储,也没有历史。要用的那几条,离开前请自己复制走。常见用途是给还没入库的草稿、导出文件或前端临时对象先占一个编号,不需要登录。

原理简述

这里调用的是浏览器自带的 crypto.randomUUID(),格式按 RFC 4122 的版本 4。你看到的是五段十六进制,长度 8-4-4-4-12,连字符只方便阅读。第三段以 4 开头,表示版本;第四段的第一个字符落在 8、9、a、b 里,表示变体。扣掉这些固定位,剩下 122 位来自操作系统的密码学随机源,不是 Math.random()。

整段计算发生在当前页面。网站看不到你生成过哪些字符串,也不会替你留一份副本。各浏览器输出的字母通常是小写,和区分大小写的系统比较之前,先统一大小写。

相关知识

自增整数短、按插入顺序排,适合单一数据库;缺点是多处同时写入容易撞号,外人还能从数字大小估计数据量。UUID 更长,索引会多占一点空间,换来的是离线也能编号、事后合并几乎不用改号。版本 1 会带时间和网卡信息,版本 7 把时间戳放在前面便于排序。本页只出版本 4,字符串里没有时间,也不能反推是哪台电脑生成的。它不是口令:拿到这个字符串的人,就能指向对应记录。

常见问题

什么时候用 UUID,什么时候用自增主键?
要在浏览器里先给草稿编号,或多套服务各自写入再汇总时,用 UUID,并在数据库加唯一约束。单机小表、很在意索引体积,继续用自增即可。
一次生成几十条会不会重复?
122 位随机空间里,日常批量的碰撞可以忽略,但不是绝对为零。不要假设生成器保证永不重复,让数据库拒绝重复行。
能拿它当登录令牌吗?
不能。UUID 的目标是不重复,不是保密。访问令牌应单独生成,并限制有效期和使用范围。