跳转到主要内容

生成随机 UUID v4

第 4 版 UUID 是一个 128 位的值,其中 122 位来自密码学安全的随机源。其余 6 位标记版本和 RFC 变体,因此每个 UUID v4 的第三组都以 4 开头。

计算示例

输入的随机字节
9d 41 7c 02 e8 5b 13 f6 2a 7e c1 94 06 d3 b8 5f
结果
9d417c02-e85b-43f6-aa7e-c19406d3b85f
生成的 UUID 数量至少出现一个重复的概率
10⁶≈ 9.4 × 10⁻²⁶
10⁹≈ 9.4 × 10⁻²⁰
10¹²≈ 9.4 × 10⁻¹⁴
10¹⁵≈ 9.4 × 10⁻⁸

重复概率达到 50% 所需的 UUID 数量: ≈ 2.71 × 10¹⁸

工作原理

  • 生成器先用安全的随机数据填充 16 个字节,再把第 6 个字节的高半字节设为 4(版本),把第 8 个字节的最高两位设为 10(变体)。因此第三组以 4 开头,第四组以 8、9、a 或 b 开头。
  • 可能的取值共有 2¹²² 个,用生日问题近似公式 p ≈ 1 − e^(−n²/2¹²³) 可以算出 n 个随机 UUID 中至少出现一个重复的概率。
  • UUID v4 不包含时间戳或硬件信息。请把它当作标识符使用,而不要当作密码或身份验证密钥。
UUID版本

一次生成1-100个UUID

关于UUID

UUID v1: 基于时间的UUID,包含时间戳和生成UUID的计算机的MAC地址。当您需要知道UUID何时创建时很有用。

UUID v4: 随机生成的UUID。这是最常用的版本,在最小信息泄露的情况下提供良好的唯一性。

UUID v5: 使用SHA-1哈希的基于名称的UUID。给定相同的命名空间和名称,您将始终获得相同的UUID。对于确定性UUID生成很有用。

更多 UUID 指南