UUID(通用唯一识别码,Universally Unique Identifier)是 128 位的标识符,通常写成 36 个字符的 8-4-4-4-12 十六进制形式,例如 550e8400-e29b-41d4-a716-446655440000,用于在不依赖中央分配的情况下生成几乎不会重复的 ID。下面说明常见的格式写法。
UUID写法转换说明
常见写法有:标准小写 36 位(带连字符)、去掉连字符的 32 位、带花括号的大写 GUID 形式 {XXXXXXXX-…},以及 URN 形式 urn:uuid:…。数据库中可以用 16 字节二进制存储,比 36 字符字符串更省空间。
示例
输入:版本 3,DNS 命名空间,名称 python.org
生成结果:6fa459ea-ee8a-3ca4-894e-db77e160355e
说明:基于 MD5,与版本 5 原理相同,新项目更推荐版本 5。
常见误区
- 误区:UUID 绝对不会重复——只是概率极低,版本 4 生成 2^61 个左右才有约一半概率出现一次碰撞
- 误区:GUID 和 UUID 不同——两者是同一种东西
- 误区:去掉连字符就不是 UUID——只是写法不同
- 误区:版本 4 可以当随机密码——它的格式和随机位数都不适合
计算方法
版本 4 有 122 位随机,可能的值约为 2^122 ≈ 5.3×10^36 个。按生日问题估算,生成 n 个时出现重复的概率约为 n²/(2×2^122);要让碰撞概率达到 50%,大约需要生成 2.7×10^18 个。
JavaScript 示例
下面是用 JavaScript 实现的写法,可以按需要修改:
// 现代浏览器与 Node.js 19+
const id = crypto.randomUUID();
console.log(id); // 例如 3b241101-e2bb-4255-8caf-4136c566a962
console.log(id.replace(/-/g, ''));
本站的UUID生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【UUID 会重复吗?】理论上可能,但版本 4 的碰撞概率极低,实际应用中可以视为唯一。
【UUID 和 GUID 有什么区别?】没有本质区别,GUID 是微软对 UUID 的叫法。
【UUID 区分大小写吗?】不区分,规范建议输出小写,比较时忽略大小写。
文中示例可以在本站对应工具中核对。
标签: 实用工具