UUID UUID Generator

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

UUID v5 生成器

用 SHA-1 从命名空间和名称推导出确定性的 UUID v5 —— 名称推导的推荐版本。

  • SHA-1 哈希
  • 确定性
  • RFC 4122

UUID v5 生成器

v5
范围为 1 至 1000。
格式

结果 0

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

    什么是UUID v5

    UUID v5 的生成方式和 v3 相同,只是把 MD5 换成了 SHA-1。命名空间和名称先被拼接,再做哈希,然后写入版本号和变体号。

    同一个命名空间和名称,在任何语言、任何平台上都得到同一个 UUID,这让它非常适合给外部实体 —— 域名、URL、URL 中的对象 —— 分配一个稳定且不会互相冲突的标识符。

    使用方法

    1. 在下拉框里选择 v5
    2. 选择命名空间(域名通常选 DNS)。
    3. 输入名称,然后点击生成 UUID
    4. 同样的输入重复生成,结果始终一致。

    适用场景

    • 给域名、URL 或消息体分配稳定的标识符。
    • 多个系统需要在不事先通信的情况下算出同一个 ID。
    • 幂等导入:重复处理同一条记录不会产生新标识符。

    结构

    拼接命名空间字节和名称的 UTF-8 字节,做 SHA-1 哈希,取前 128 位,再写入版本号(5)和变体号。

    UUID v5 的定位

    什么时候该用哪个选项
    选项何时使用
    v5SHA-1:名称推导的推荐版本
    v3同一思路的 MD5 版本,只在必须兼容旧值时使用
    v4随机;不需要可复现的标识符时用它

    UUID 各版本速查表

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

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

    代码示例

    javascript

    // 需引入 SHA-1 实现,Web Crypto 只提供异步接口

    python

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

    csharp

    // .NET 目前仍只提供第三方实现

    常见问题

    v5 是加密安全的吗?

    SHA-1 的抗碰撞性已被削弱,在对抗性场景下不应作为安全边界,但用来生成标识符是完全够用的。如果名称由攻击者控制,请考虑加长输入或改用 HMAC。

    v5 会重复吗?

    同一命名空间下不同名称,实际上不可能碰撞。但不同命名空间里相同的名称会得到不同结果,这是刻意设计。

    v5 能排序吗?

    不能。哈希输出是均匀分布的,顺序没有意义。需要排序请用 v7。