UUID UUID Generator

免费 · 无需注册 · 无需安装

UUID v3 生成器

从命名空间和名称推导出确定性的 UUID v3 —— 同一份输入,永远得到同一个结果。

  • MD5 哈希
  • 确定性
  • RFC 4122

UUID v3 生成器

v3
范围为 1 至 1000。
格式

结果 0

    所有值都在你的设备上用 Web Crypto API 生成,不会发送到浏览器之外的任何地方。 快捷键:Ctrl + Enter — 重新生成

    什么是UUID v3

    UUID v3 是确定性生成的:它把命名空间 UUID 和名称拼在一起做 MD5 哈希,再写入版本号和变体号。同一个命名空间加同一个名称,永远得到同一个 UUID,任何机器上都是如此。

    MD5 在这里不是用来保密的,哈希本身并不是加密操作。需要注意 MD5 的抗碰撞性已被攻破 —— 如果名称可能被恶意构造,请改用基于 SHA-1 的 v5。

    使用方法

    1. 在下拉框里选择 v3
    2. 选择命名空间:DNS、URL、OID 或 X500。
    3. 输入名称,例如 example.com
    4. 点击生成 UUID,之后重复同样输入会得到相同结果。

    适用场景

    • 从域名或 URL 推导出稳定的标识符。
    • 需要长期保持一致的数据迁移映射。
    • 与仍然使用 v3 的既有系统对接。

    结构

    先按命名空间的字节序拼接名称,再对整个序列做 MD5,取前 128 位并写入版本号(3)和变体号。

    UUID v3 的定位

    什么时候该用哪个选项
    选项何时使用
    v3MD5:快速且确定性,新设计不推荐
    v5同一思路的 SHA-1 版本,新项目应选它
    v4随机;不需要同一输入得到同一标识符时用它

    UUID 各版本速查表

    版本可排序数据来源适合的场景
    v1不可以时间戳 + MAC 地址仍在依赖 v1 的既有系统
    v3不可以名称的 MD5 哈希必须使用 MD5 时的确定性标识符
    v4不可以122 位随机数绝大多数普通的唯一标识需求
    v5不可以名称的 SHA-1 哈希需要同一名称始终得到同一标识符
    v6可以重排后的时间戳既要随机性又要便于排序
    v7可以毫秒精度的 Unix 时间数据库主键和事件标识符
    v8不可以自定义位布局专有格式和实验性用途

    这七个版本都是 128 位,都用同样的 8-4-4-4-12 写法表示,区别只在于各个位代表什么。

    代码示例

    javascript

    // 需自行实现 MD5,Web Crypto 不提供
    // mdn-polyfills 或第三方库

    python

    import uuid
    id = str(uuid.uuid3(uuid.NAMESPACE_DNS, "example.com"))

    java

    UUID id = UUID.nameUUIDFromBytes("example.com".getBytes());

    常见问题

    v3 是加密安全的吗?

    不是。MD5 的抗碰撞性早已被攻破,攻击者可以构造出两个不同的名称得到同一个 UUID。它只适合做标识,不能用来做安全校验。

    为什么同一个名称总是得到同一个 UUID?

    因为这正是设计目的。v3 不包含随机数或时间,结果完全由命名空间和名称决定,所以是可复现的。

    该用 v3 还是 v5?

    新项目用 v5。除非你已经有 v3 数据、必须与之保持一致。