UUID 版本 3 生成器 (MD5 基于名称)

使用命名空间和名称通过 MD5 哈希生成一致的 UUID

命名空间设置SHA-1

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

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

尝试这些示例:

什么是 UUID v3?

UUID 版本 3 是基于命名空间的 128 位标识符(36 字符串)来自 RFC 4122,使用 MD5 哈希。它由以下部分组成:

  • 命名空间 UUID: 预定义或自定义的 UUID 命名空间
  • 名称: 用户提供的字符串,进行哈希处理
  • MD5 哈希: 应用于命名空间 + 名称组合

格式示例: 9125a8dc-52ee-365b-a5aa-81b0b3681cf6

UUID v3 的工作原理

  1. 选择一个命名空间 UUID(预定义或自定义)
  2. 将命名空间 UUID 字节与名称字符串字节连接
  3. 计算连接值的 MD5 哈希
  4. 将版本位设置为 0011(版本 3)
  5. 将变体位设置为 10(RFC 4122 标准)
  6. 组装为 32 个十六进制数字,带有连字符:8-4-4-4-12 格式

优点与考虑事项

优点考虑事项
  • 确定性生成
  • 相同输入 = 相同 UUID
  • 不需要状态
  • 没有隐私问题
  • MD5 在加密上较弱
  • 不是时间排序/可排序
  • UUID v5(SHA-1)更受欢迎
  • 没有嵌入的创建时间

UUID v3 结构

内容
0-47MD5 哈希的前 48 位
48-51版本(0011 为 v3)
52-63MD5 哈希的下 12 位
64-65变体(10 为 RFC4122)
66-127MD5 哈希的剩余 62 位

预定义命名空间

名称UUID目的
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8域名
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8URLs
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8ISO OIDs
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8X.500 Distinguished Names

UUID v3 与其他版本的比较

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

常见用例

  • 基于 URL 的标识符: 从 URLs 创建 UUIDs
  • 特定域的 ID: 将 DNS 名称转换为 UUIDs
  • 确定性文件 ID: 内容寻址
  • 用户 ID: 从电子邮件或用户名
  • 配置条目: 用于一致的键
  • 文档引用: 内容管理系统

常见问题

UUID v3 在加密上安全吗?

不太安全。UUID v3 使用 MD5,已知存在加密弱点。对于更高的安全性,请考虑 UUID v5(SHA-1)或 UUID v4(随机)。

相同的输入是否总是会产生相同的 UUID v3?

是的。UUID v3 是确定性的 - 相同的命名空间和名称将始终产生相同的 UUID,这使其适用于可重复的 ID。

UUID v3 和 v5 之间有什么区别?

它们的工作方式相同,只是 v3 使用 MD5,而 v5 使用 SHA-1。UUID v5 通常更受欢迎,因为 SHA-1 在加密上比 MD5 更强。

我可以创建自己的命名空间吗?

可以。虽然 RFC 4122 定义了标准命名空间(DNS、URL、OID、X.500),但您可以使用任何有效的 UUID 创建自定义命名空间。

UUID v3 适合用于安全令牌吗?

不。由于 MD5 的弱点和确定性,UUID v3 不推荐用于安全令牌或任何需要不可预测性的东西。

资源