使用说明
Generated by AI
UUID 生成器
简介
UUID 生成器支持创建多种版本的通用唯一标识符(UUID),包括基于时间、随机、哈希和特殊值的 UUID。同时提供 UUID 检查器功能,用于验证和分析现有 UUID 的版本、变体和有效性。适用于数据库主键生成、分布式系统标识、会话管理等场景。
核心功能
UUID 生成
- 多版本支持:生成 V1、V3、V4、V5、V6、V7 版本的 UUID
- 特殊值:创建 NIL(全零)和 MAX(全一)UUID
- 批量生成:一次生成最多 100 个 UUID
- 命名空间支持
和 V5 支持自定义命名空间和名称
UUID 检查器
- 有效性验证:检查字符串是否符合 UUID 格式
- 版本检测:自动识别 UUID 版本(1-7)
- 变体分析:确定 UUID 变体 (RFC 4122、NCS、Microsoft、Future)
- 特殊检测:识别 NIL 和 MAX UUID
- 规范化:显示小写标准格式的 UUID
UUID 版本详解
NIL UUID
格式:00000000-0000-0000-0000-000000000000
所有位都设置为零的特殊 UUID, 用作:
- 数据库中的空值占位符
- 未初始化状态的默认值
- 缺失或无效 ID 的标识
MAX UUID
格式:ffffffff-ffff-ffff-ffff-ffffffffffff
所有位都设置为一的特殊 UUID, 用作:
- 边界测试的最大值哨兵
- 范围查询的上限
- 特殊标记值
V1:基于时间
使用当前时间戳和 MAC 地址生成,特点:
- 时序性:按生成时间自然排序
- 唯一性:结合时间戳和硬件地址,极低碰撞概率
- 隐私问题:可能暴露 MAC 地址和生成时间
- 适用场景:日志记录、事件追踪(需注意隐私)
V3:MD5 哈希
通过对命名空间 UUID 和名称进行 MD5 哈希生成,特点:
- 确定性:相同输入总是产生相同 UUID
- 命名空间隔离:不同命名空间下的同名称产生不同 UUID
- 兼容性:使用 MD5 算法,计算速度快
- 适用场景:需要从名称生成一致标识符(遗留系统)
V4:随机
使用随机数或伪随机数生成,特点:
- 简单性:最易实现,无需额外参数
- 隐私性:不包含时间或硬件信息
- 高碰撞率:理论上存在碰撞,但概率极低 (2^122 分之一)
- 适用场景:通用唯一标识,最常用版本
V5:SHA-1 哈希
与 V3 类似,但使用 SHA-1 哈希,特点:
- 确定性:相同输入总是产生相同 UUID
- 更强安全性
比 MD5 抗碰撞性更好 - 推荐替代:新应用应优先使用 V5 而非 V3
- 适用场景:需要从名称生成一致标识符
V6:重排序的基于时间
V1 的改进版,重新排列时间戳字段,特点:
- 时序性:保留时间排序特性
- 数据库友好:更适合 B-tree 索引和排序
- 兼容性:与 V1 使用相同时间精度
- 适用场景:数据库主键、需要时序性的分布式 ID
V7:Unix 时间戳
使用毫秒级 Unix 时间戳和随机位,特点:
- 时序性:按生成时间自然排序
- 隐私性:不包含 MAC 地址
- 数据库友好:适合作为主键,索引效率高
- 推荐使用:结合时序性和隐私性的现代选择
使用方法
生成 UUID
- 选择版本:从版本选择器中选择 UUID 版本 (NIL、MAX、V1-V7)
- 配置选项(适用于 V3/V5):
- 选择预定义命名空间 (DNS、URL、OID、X500)
- 或输入自定义命名空间 UUID
- 输入要哈希的名称
- 设置数量:选择要生成的 UUID 数量(1-100)
- 查看结果:生成的 UUID 会显示在右侧面板
- 复制使用:点击单个 UUID 复制,或使用「全部复制」按钮
检查 UUID
- 粘贴 UUID:在检查器输入框中输入 UUID 字符串
- 查看分析:
- 有效性状态(有效/无效)
- 规范化形式(小写标准格式)
- 版本号 (1-7 或未知)
- 变体类型 (RFC 4122、NCS、Microsoft、Future)
- 特殊类型检测(NIL / MAX)
- 验证结果:确认 UUID 是否符合预期格式和版本
命名空间 UUID
用于 V3 和 V5 的预定义命名空间:
| 命名空间 | UUID | 使用场景 |
|---|---|---|
| DNS | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | 域名标识(如 example.com) |
| URL | 6ba7b811-9dad-11d1-80b4-00c04fd430c8 | URL 地址标识 |
| OID | 6ba7b812-9dad-11d1-80b4-00c04fd430c8 | ISO OID 标识 |
| X500 | 6ba7b814-9dad-11d1-80b4-00c04fd430c8 | X.500 DN 标识 |
应用场景
数据库主键
- 使用 V4 生成随机主键,避免序列号泄露数据量
- 使用 V7 生成时序主键,提升插入性能和范围查询效率
- 使用 V5 从业务标识生成确定性主键
分布式系统
- 各节点独立生成 UUID 无需中心化协调
- V1/V6/V7 支持时间排序,便于分片和归档
- V4 确保不同系统间 ID 不冲突
会话管理
- 使用 V4 生成唯一会话令牌
- 使用 V7 结合时间戳实现自动过期机制
- 使用 V5 从用户 ID 生成确定性会话标识
文件命名
- 为上传文件生成唯一文件名,避免覆盖
- 使用 V7 确保文件名按时间排序
- 使用 V4 确保随机性和隐私性
API 资源标识
- RESTful API 中的资源 ID
- GraphQL 中的全局唯一 ID
- 微服务间的请求跟踪 ID
消息队列
- 消息唯一标识符
- 事件溯源中的事件 ID
- 分布式事务的事务 ID
生成示例
示例 1:生成随机 UUID (V4)
设置:
- 版本:V4
- 数量:3
输出:
f47ac10b-58cc-4372-a567-0e02b2c3d479
7c9e6679-7425-40de-944b-e07fc1f90ae7
550e8400-e29b-41d4-a716-446655440000
示例 2:生成确定性 UUID (V5)
设置:
- 版本:V5
- 命名空间:DNS (
6ba7b810-9dad-11d1-80b4-00c04fd430c8) - 名称:
example.com
输出:
cfbff0d1-9375-5685-968c-48ce8b15ae17
相同输入总是生成相同 UUID, 适用于需要幂等性的场景。
示例 3:生成时序 UUID (V7)
设置:
- 版本:V7
- 数量:3
输出:
018c5a2e-7c00-7000-8000-000000000001
018c5a2e-7c00-7001-8000-000000000002
018c5a2e-7c00-7002-8000-000000000003
注意前缀相同,可按时间排序。
示例 4:UUID 检查器
输入:
550e8400-e29b-41d4-a716-446655440000
分析结果:
- 有效:是
- 规范化:
550e8400-e29b-41d4-a716-446655440000 - 版本:4
- 变体:RFC 4122(标准)
- 特殊类型:无
示例 5:基于 URL 的 UUID (V5)
设置:
- 版本:V5
- 命名空间:URL (
6ba7b811-9dad-11d1-80b4-00c04fd430c8) - 名称:
https://example.com/users/123
输出:
2ed6657d-e927-568b-95e1-2665a8aea6a2
适用于从 URL 生成一致性标识符。
最佳实践
版本选择建议
- 通用场景:使用 V4(随机)或 V7(时序)
- 数据库主键:优先使用 V7,其次 V4
- 确定性生成:使用 V5(推荐)或 V3(兼容)
- 隐藏硬件信息:避免使用 V1,选择 V4 或 V7
- 时序排序:使用 V1、V6 或 V7
存储优化
- 数据库中以 16 字节二进制格式存储,而非 36 字节字符串
- 创建索引时注意 V4 的随机性可能导致索引碎片
- V7 和 V6 适合 B-tree 索引,插入性能更好
安全注意
- V1 可能泄露 MAC 地址和生成时间,避免用于敏感场景
- V3 使用 MD5, 不适合加密场景
- 不要将 UUID 作为安全令牌或密码
- 生成 UUID 后应通过安全通道传输
技术说明
- 工具基于
uuid库,符合 RFC 4122 标准 - V1-V7 的随机性基于加密安全的随机数生成器
- V3 和 V5 的哈希计算在客户端完成,不会泄露输入数据
- 检查器使用标准 UUID 验证和解析算法
特点
- 支持更多版本(包括最新的 V6 和 V7) 和命名空间选项
- 提供批量生成和检查器功能,无需记忆参数
- 无需编写代码即可快速验证和测试 UUID
常见问题
UUID 是否真的唯一
理论上 UUID 可能碰撞,但概率极低:
- V4:碰撞概率约为 2^-122,生成 10 亿个 UUID 碰撞概率仅为 0.0000000001%
- V1/V6/V7:结合时间戳和随机位,几乎不可能碰撞
- V3/V5:相同输入会产生相同 UUID, 需确保输入唯一性
如何选择命名空间
对于 V3 和 V5:
- 使用 DNS 命名空间处理域名
- 使用 URL 命名空间处理完整 URL
- 使用 OID 命名空间处理 ISO 对象标识符
- 使用自定义命名空间隔离不同应用或租户
为什么推荐 V5 而非 V3
SHA-1 比 MD5 具有更好的抗碰撞性,虽然 SHA-1 已不推荐用于加密,但对 UUID 生成仍足够安全。新应用应优先使用 V5,除非需要与仅支持 V3 的遗留系统兼容。



