UUID 生成器
生成版本1、3、4、5、6和7的UUID。选择版本,配置选项并点击生成。所有处理均在浏览器中本地完成。
已复制!
反过来读一个
UUID版本说明
| 版本 | 方法 | 用途 |
|---|---|---|
| v1 | 时间戳(100纳秒)+ 随机节点 | 时间排序的ID;嵌入创建时间 |
| v4 | 加密随机 | 通用唯一ID——最常用 |
| v5 | 命名空间 + 名称的SHA-1哈希 | 类似v3但使用SHA-1(推荐优先于v3) |
| v6 | 重排序的v1时间戳 | 数据库友好的时间排序ID |
| v7 | Unix毫秒时间戳 + 随机 | 现代时间排序,单调递增,最适合数据库 |
默认该拿的是版本 4:它整个就是随机位,什么都不泄露,碰撞只存在于理论上。版本 7 值得了解,因为它把时间放在最前面,于是一列这样的值会按行创建的先后排好,数据库索引保持紧凑,写入不会到处乱撒。版本 1 和 6 嵌的是同一个时间戳外加一个节点字段;这里的节点是设了多播位的随机数,因此永远不会是真实的网络地址。把任意 UUID 粘进查看框,它会告诉你版本,以及在有的情况下,它被造出来的那一刻。
常见问题
我该用哪个版本?
没有别的理由就用版本 4。它是随机的,什么也不透露。如果这些值要进一个带索引的数据库列,就选版本 7:它按创建时间排序,能让索引保持紧凑,而不是让每次插入散落到各处。
可以拿它们当密钥用吗?
不行。版本 4 的 UUID 由密码学安全的随机源生成,因此猜不出来,但它的设计初衷就是被显示、被记录、被到处传递。请把它当作标识符,绝不要当密码或会话令牌。
版本 3 去哪了?
随 MD5 一起被拿掉了。版本 3 按定义就是 MD5,而 MD5 存在可行的碰撞攻击。版本 5 用 SHA-1 做同样的事,接受同样的命名空间和名称,所以切过去只是改一个设置。
会有两个人生成出同一个 UUID 吗?
对版本 4 来说,实际上不会。里面有 122 个随机位,多到你得一辈子每秒生成几十亿个,碰撞才开始变得有可能。版本 1、6、7 还额外依赖时间,在同一台机器内碰撞的机会更小。
节点字段为什么是随机的?
版本 1 和 6 原本在那里放机器的网络地址,这会泄露一个值出自何处。本页面用随机字节填充它并设置多播位,这正是规范规定的、用来标记一个并非真实硬件地址的节点的做法。