UUID 生成器
在你的设备上运行,不会发送任何内容。一切都在您自己的设备上完成。您输入或生成的任何内容都不会被发送到任何地方。
版本
完全随机,不包含任何嵌入信息。最常用于通用唯一标识符。大小写
生成的 UUID 将显示在此处
在浏览器本地批量生成并校验 v1、v3、v4、v5 和 v7 版本的 UUID。
UUID(通用唯一标识符)是一个 128 位的值,用于标识数据而无需中央机构分配 ID - 两个随机生成的 UUID 发生碰撞的概率极其微小。此工具可生成目前仍在广泛使用的四种 UUID 版本 - v1(基于时间戳)、v3 和 v5(确定性,由命名空间和名称派生)、v4(随机)以及 v7(按时间排序,越来越多地用于数据库主键)- 同时也能校验并解析您粘贴的任意 UUID,全部在浏览器本地完成。
常见问题
我应该使用哪个 UUID 版本?
对于大多数通用标识符,使用 v4 - 它是随机的,不携带任何信息。如果 UUID 将作为数据库主键或索引,v7 通常更好,因为它按时间顺序排序,能保持索引高效。当需要相同输入(如 URL 或名称)始终生成相同 UUID 时使用 v5;仅在确实需要在 ID 中嵌入时间戳时才使用 v1,并注意它可能暴露创建时间。
v3 和 v5 有什么区别?
两者都是确定性的:给定相同的命名空间和名称,总是生成相同的 UUID。唯一的区别是哈希函数 - v3 使用 MD5,v5 使用 SHA-1。由于 MD5 在密码学上已被攻破,任何新系统都建议使用 v5;v3 的存在主要是为了兼容旧系统。
为什么 v7 按时间顺序排序?
v7 UUID 在随机位之前以 48 位的 Unix 毫秒时间戳开头,因此当以普通字符串(或字节)比较 UUID 时,较早创建的会排在较晚创建的之前。随机的 v4 UUID 没有这种结构,这可能会使数据库索引碎片化,因为新的随机值会插入到整个键范围内,而不是末尾。
这里生成的 UUID 是否具有密码学级别的随机性?
是的。v4 以及 v1 和 v7 中的随机部分都使用 Web Crypto API 的 crypto.getRandomValues - 这是浏览器内置的密码学安全随机数生成器,而非 Math.random()。所有内容都不会在服务器上生成,也不会被发送到任何地方。
两个随机生成的 v4 UUID 发生碰撞的可能性有多大?
可能性极其微小。一个 v4 UUID 有 122 个随机比特位(另有 6 个比特位固定用于标记版本和变体),共有约 5.3 x 10^36 种可能的取值。即使以每秒生成十亿个 UUID 的速度持续 100 年,任何碰撞发生的概率仍然低于十亿分之一 - 这正是 v4 被信任为无需中央注册表即可保证唯一性的标识符的原因。
UUID 和 GUID 是同一回事吗?
在实际使用中是的 - GUID(全局唯一标识符)是微软对 UUID 标准(RFC 4122)所定义的同一种 128 位标识符格式的称呼。有些环境会将其写成大写字母,或用花括号({...})括起来,但其底层数值和结构是完全相同的,因此在这里生成的 UUID 同样也是有效的 GUID。