生成随机 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 不包含时间戳或硬件信息。请把它当作标识符使用,而不要当作密码或身份验证密钥。
一次生成1-100个UUID
关于UUID
UUID v1: 基于时间的UUID,包含时间戳和生成UUID的计算机的MAC地址。当您需要知道UUID何时创建时很有用。
UUID v4: 随机生成的UUID。这是最常用的版本,在最小信息泄露的情况下提供良好的唯一性。
UUID v5: 使用SHA-1哈希的基于名称的UUID。给定相同的命名空间和名称,您将始终获得相同的UUID。对于确定性UUID生成很有用。