UUID v5 生成器 - 使用 SHA-1 创建基于名称的 UUID

在线生成基于命名空间的 UUID 第5版。使用 SHA-1 哈希为命名空间和名称组合创建一致的 UUID。

命名空间设置SHA-1

版本 v3 和 v5 的 UUID 需要命名空间和名称来生成确定性 UUID。

必须是有效的UUID。使用下拉列表选择预定义的命名空间。
任何将被散列以创建UUID的文本字符串。

尝试这些示例:

什么是 UUID v5?

UUID 版本 5 是基于命名空间的 128 位标识符(36 字符字符串),在 RFC 4122 中定义。它结合了:

  • 命名空间 UUID:用于范围限定的预定义或自定义 UUID
  • 名称:命名空间内用户定义的字符串值
  • SHA-1 哈希:用于生成结果的密码学算法

格式示例2ed6657d-e927-5eb1-9a03-0242ac130003

UUID v5 的工作原理

  1. 选择一个命名空间 UUID(预定义或自定义)
  2. 将命名空间 UUID 与名称字符串连接
  3. 计算连接值的 SHA-1 哈希
  4. 设置版本位 (0101) 和变体位 (10)
  5. 将结果以 8-4-4-4-12 的格式拼装为 32 个十六进制数字并插入连字符

优势及注意事项

优势注意事项
  • 确定性(相同输入 = 相同 UUID)
  • 基于命名空间的组织
  • 无需网络或时间依赖
  • 无隐私泄露(无 MAC 地址)
  • 不可按时间排序
  • 相同输入始终产生相同 UUID
  • 命名空间选择影响唯一性
  • SHA-1 存在已知的密码学弱点

UUID v5 结构

内容
0-47SHA-1 哈希的前 48 位
48-51版本 (0101 表示 v5)
52-63SHA-1 哈希的下一个 12 位
64-65变体 (10 表示 RFC4122)
66-127SHA-1 哈希的剩余 62 位

UUID v5 vs. 其他版本

版本基于用例隐私
UUID v1时间 + MAC时间排序的 ID⚠️ 泄露 MAC
UUID v3命名空间 + MD5确定性 ID✅ 私有
UUID v4随机安全随机 ID✅ 私有
UUID v5命名空间 + SHA-1确定性 ID✅ 私有
UUID v6时间(重排)可排序 ID⚠️ 泄露 MAC
UUID v7时间 + 随机可排序 ID✅ 私有

预定义命名空间

命名空间UUID用途
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8域名
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8URL
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8ISO OID
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8X.500 可分辨名称

常见用例

  • 内容寻址:为相同内容生成一致 ID
  • 分布式系统:跨系统命名资源
  • URL 映射:将 URL 转换为稳定标识符
  • 配置管理:跟踪命名配置项
  • 数据去重:识别重复记录
  • 联合身份:跨系统一致标识符

常见问题

UUID v5 比 UUID v3 更好吗?

是的,在大多数情况下。UUID v5 使用 SHA-1,其密码学强度高于 UUID v3 中的 MD5。但两者均提供确定性生成。

UUID v5 值会发生冲突吗?

理论上可能,但由于 SHA-1 属性,在实践中几乎不可能。使用不同命名空间或名称字符串可几乎消除冲突风险。

SHA-1 对 UUID v5 来说足够安全吗?

对于 UUID 生成用途,SHA-1 虽有弱点仍足够。UUID v5 不用于安全目的,仅用于一致标识符生成。

我可以为 UUID v5 创建自定义命名空间吗?

可以。虽然 RFC 4122 定义了标准命名空间(DNS、URL、OID、X.500),但你可使用任意有效 UUID(通常为随机 v4)创建自定义命名空间。

相同名称会始终生成相同的 UUID v5 吗?

是,但仅限于同一命名空间。不同命名空间下相同名称生成不同 UUID,这有助于标识符组织。

资源