跳到主要内容
FreeOnlineTools Go
简体中文
解释

什么是 UUID?通用唯一标识符的完整说明

作者:FreeOnlineTools Team · 更新日期:2026-09-02

快速解答

UUID 是一个 128 位标识符,表示为 36 个字符(32 个十六进制数字加 4 个连字符)。 UUID 在没有协调的情况下实际上是唯一的 - 冲突概率可以忽略不计。 UUID v4(随机)是最常见的版本。使用我们免费的 UUID 生成器在您的浏览器中创建 UUID。

介绍

UUID(通用唯一标识符),在 Microsoft 术语中也称为 GUID(全局唯一标识符),是一个 128 位标识符,实际上无需中央协调即可保证唯一。 UUID 由 RFC 4122 定义,广泛用作数据库主键、请求 ID、会话令牌和分布式系统标识符。最常见的版本是 UUID v4,它使用随机位。 UUID 表示为由连字符分隔的 5 组中的 32 个十六进制数字:8-4-4-4-12(例如,550e8400-e29b-41d4-a716-446655440000)。

步步

  1. 了解 UUID 结构

    UUID 为 128 位,显示为 5 组 32 个十六进制数字:8-4-4-4-12,用连字符分隔(例如 550e8400-e29b-41d4-a716-446655440000)。第 13 位数字表示版本(4 表示 v4),第 17 位数字表示变体。

  2. 了解 UUID 版本

    v1:基于时间(时间戳 + MAC 地址)——按时间排序,但会泄露身份。 v3:基于名称,使用 MD5 哈希。 v4:随机——最常见,没有隐私问题。 v5:基于名称,使用 SHA-1 哈希。 v6 和 v7:按时间排序,并且比 v1 改进了隐私性。

  3. 了解碰撞概率

    UUID v4 有 2^122 个可能的值。 103 万亿个 UUID 之间发生冲突的概率为 50%。对于实际使用(数百万个 ID),冲突概率实际上为零 - 您可以独立生成 UUID,无需协调。

  4. 适当使用 UUID

    几乎所有用例(数据库 ID、请求 ID、会话令牌)都使用 v4。如果您需要按时间排序的数据库位置 ID,请使用 v7。在安全敏感的上下文中避免使用 v1 — 它嵌入了时间戳和 MAC 地址。

示例

UUID v4(随机)

输入: 使用 crypto.getRandomValues 生成

输出: 550e8400-e29b-41d4-a716-446655440000

UUID v1(基于时间)

输入: 时间戳+MAC地址

输出: a3bbf0ee-d6e4-11ed-a5b3-3c9703e8b4a1

无 UUID

输入: All zeros

输出: 00000000-0000-0000-0000-000000000000

常见问题

  • 对 UUID 使用 Math.random() — 它在加密上不安全。在浏览器中使用 crypto.getRandomValues() 或 crypto.randomUUID()。
  • 将 UUID 存储为字符串 — UUID 字符串为 36 个字节;存储为 UUID 类型(16 字节),效率更高。如果可用,请在数据库中使用本机 UUID 类型。
  • 在安全敏感上下文中使用 v1 — v1 嵌入时间戳和 MAC 地址,这可能会泄露有关其生成时间和地点的信息。使用 v4 进行匿名。
  • 假设 UUID 确实是唯一的——它们实际上是唯一的(碰撞概率可以忽略不计),但在数学上不能保证唯一。

提示

  • 几乎所有用例都使用 UUID v4 - 它是随机的,没有隐私问题,并且受到所有现代数据库的支持。
  • 在现代浏览器中使用 crypto.randomUUID() 来获得没有库的内置 v4 生成器。
  • 将 UUID 作为 UUID/GUID 类型存储在数据库中(16 字节)而不是字符串(36 字节),以获得更好的存储和索引性能。
  • 使用我们的 UUID 生成器在浏览器中立即创建 UUID — 无需注册,完全私密。

相关工具

相关指南

参考