UUID 生成与验证

概述

UUID 生成器支持批量生成 v1、v3、v4、v5、v6、v7 以及 NIL 和 MAX 等全部版本的 UUID,每次最多生成 100 个;同时提供检查器,可验证任意 UUID 字符串的格式有效性、版本和变体。

UUID v1/v4/v5/v7 的区别与选择

v4(随机)

  • 完全随机,不含时间或硬件信息
  • 最常用版本,适合大多数场景
  • 缺点:数据库按主键插入时,随机值导致 B-tree 索引碎片化,写入性能下降

v7(推荐用于数据库主键)

  • 前 48 位为毫秒级 Unix 时间戳,天然按时间排序
  • 适合替代数据库自增 ID,插入效率高
  • 不含 MAC 地址,兼顾时序性和隐私

v5(基于名称,哈希)

  • 相同命名空间 + 相同名称 → 永远生成相同 UUID
  • 使用 SHA-1 哈希,适合需要幂等性的场景
  • 示例:从域名 example.com 始终生成固定 UUID

v1(基于时间 + MAC)

  • 包含 MAC 地址,可能泄露设备信息
  • 生成的 UUID 按时间有序,但时间字段位置在中间,排序效率不如 v7
  • 新项目不推荐,v6/v7 是其改进替代版

v3 与 v5 的选择

v3 使用 MD5,v5 使用 SHA-1,两者都是基于命名空间和名称生成确定性 UUID。新项目应选 v5;只有对接只支持 v3 的遗留系统时才需要 v3。

命名空间与名称的用法

生成 v3 或 v5 时必须填写命名空间和名称。工具默认命名空间为 DNS 命名空间 6ba7b810-9dad-11d1-80b4-00c04fd430c8,可以自定义为任意有效 UUID。相同命名空间下不同名称产生不同 UUID,不同命名空间下相同名称也产生不同 UUID,命名空间起到隔离作用。

检查器的验证结果

将任意 UUID 粘贴到检查器,会显示规范化格式(统一小写)、版本号(v1–v7 或未知)、变体(RFC 4122、NCS、Microsoft)以及是否为 NIL(全零)或 MAX(全 F)特殊值。检查器对格式不符合标准的字符串会直接标记"无效",不会猜测接近的版本。