真正随机UUID生成器 - 在线批量生成v4与v7 UUID
生成v4(完全随机)或v7(按时间排序)的通用唯一标识符,可逐个生成,也可在浏览器中批量生成最多1,000个。
选择UUID版本和所需数量,然后点击生成按钮。你可以切换为大写,或在复制前去除连字符。
真正随机UUID生成器 - 在线批量生成v4与v7 UUID
生成v4(完全随机)或v7(按时间排序)的通用唯一标识符,可逐个生成,也可在浏览器中批量生成最多1,000个。
从RANDOM.ORG获取128位大气噪声熵,并用它为本地PRNG设定种子,为批次中的每个UUID提供随机位。如果无法访问random.org,则回退到本地CSPRNG。
版本4完全随机:128位中有122位直接来自安全随机源。
关于UUID生成器
UUID(通用唯一标识符,在Windows平台也称GUID)是一个128位值,以32个十六进制数字写成五组、组间用连字符分隔,格式为xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx,其中M表示版本,N表示变体。由于取值空间极其庞大,两个正确生成的UUID在实际应用中几乎不会冲突,因此它们成为数据库主键、API请求ID、文件名、分布式追踪、消息去重以及任何需要独立系统协调生成标识符场景的默认选择。
此UUID生成器完全在浏览器中运行。每个标识符都使用Web Crypto API提供的密码学安全随机源crypto.getRandomValues()生成,而不是可预测的Math.random()。你生成的内容不会发送到服务器、记录或存储:关闭标签页后,标识符只存在于你粘贴它们的位置。因此,即使标识符最终用于生产系统,也可以安全使用此工具。
支持的两个版本都由RFC 9562定义(该标准于2024年取代了原RFC 4122)。版本4是经典的完全随机UUID:除六个固定的版本和变体位外,其余122位均为随机值。版本7是现代的按时间排序方案:前48位存放Unix毫秒时间戳,后面是随机位。由于时间戳位于开头,之后创建的v7标识符按字典序排在之前的标识符之后。这一特性让数据库索引更友好——B-tree页面按顺序填充,而不是随机写入——所以v7现在是PostgreSQL、MySQL及大多数其他存储中新主键的推荐默认值。如果不希望标识符泄露创建时间,请选择v4。
批量选项一次最多生成1,000个标识符,每行一个,可直接粘贴到种子脚本、电子表格或测试夹具中。格式开关可将输出转为大写(根据规范两种大小写都有效,但规范建议输出小写),或去除连字符,以适应存储纯32位数字的系统。需要诚实说明的一点是:唯一性是概率性的,并非登记保证——没有任何生成器能保证标识符从未在其他地方使用;UUID是标识符而非秘密,因此绝不要把它用作密码或访问令牌。
可选的真随机模式会将生成器连接到物理随机源。选择后,工具通过RANDOM.ORG的公共HTTP接口获取由大气无线电噪声产生的八个16位整数——浏览器直接与random.org通信,中间没有我们的服务器——并将其组合成sfc32伪随机生成器的单个128位种子。批次中的每个UUID随后都从该种子生成器取得随机位,因此整个批次可追溯至物理随机性,而非算法状态;在v7模式下,48位时间戳字段仍来自你的时钟,与本地模式完全相同,版本和变体位也以相同方式设置。诚实的取舍是:种子确实随机,但播种后扩展为多个标识符是确定性的,种子整数会通过网络传输——对于标识符而言完全没问题,这也是本地CSPRNG仍为默认且同样可靠的选择的原因。如果无法访问random.org或已用尽每IP配额,工具会自动回退到crypto.getRandomValues(),显示相应提示,结果下方的来源标记也总会说明实际生成标识符的路径。
UUID生成器示例
典型设置及其生成结果。
| 设置 | 输出 | 说明 |
|---|---|---|
| v4,数量1,默认格式 | 一个36字符、格式为xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx的标识符 | 第三组始终以4(版本数字)开头;N为8、9、a或b之一(变体)。 |
| v7,数量1 | 按时间排序、第三组以版本数字7开头的标识符 | 前12个十六进制数字编码Unix毫秒时间戳,因此后生成的ID排在先生成的ID之后。 |
| v4,数量100,去除连字符 | 100行,每行32个不带连字符的十六进制数字 | 适用于存储紧凑格式的系统,例如某些旧式架构和URL短标识。 |
| v7,数量1000,大写 | 1,000个大写标识符,每行一个 | 批量模式每次点击最多生成1,000个;需要更多时再次运行。大小写等价。 |
如何生成UUID
- 选择版本:v4用于完全随机标识符,v7用于按创建时间排序的标识符。
- 在数量框中输入所需数量——范围为1到1000。
- 可选勾选大写或去除连字符,以更改输出格式。
- 点击生成按钮,然后用剪贴板按钮复制全部内容,或从输出框选择相应行。
UUID生成器常见问题
UUID v4和UUID v7有什么区别?
除版本和变体位外,v4完全随机。v7把48位Unix毫秒时间戳放在随机位之前,因此标识符按创建时间排序。插入局部性重要的数据库键应使用v7;不应让ID推断出创建时间时使用v4。
两个UUID会发生冲突吗?
理论上会,实际不会。v4 UUID有122个随机位,需要生成约2.7 quintillion个标识符才有50%的概率出现一次重复。对于任何真实工作负载,冲突风险都远低于硬件故障风险。
这个生成器是否具有密码学安全性?
随机位来自由操作系统设种的crypto.getRandomValues() CSPRNG,因此标识符不可预测。不过UUID是标识符而非秘密,不要将其用作密码、会话令牌或API密钥。
UUID会发送到服务器或存储在某处吗?
不会。生成过程在浏览器中通过Web Crypto API完成。任何内容都不会传输、记录或持久化;刷新页面后所有内容都会丢失。
大写UUID有效吗?可以去除连字符吗?
RFC 9562规定输出应为小写,但解析器必须接受两种大小写,因此大写在实践中处处有效。连字符只是显示格式;许多数据库存储不带连字符的32位形式,但要求规范36字符布局的工具会要求保留它们。
v7 UUID会泄露信息吗?
只会泄露精确到毫秒的创建时间,其余位都是随机的。如果你的场景不应暴露记录创建时间,请改用v4。