工具哇!

UUID 生成

批量 UUID 生成、UUID 格式校驗

UUID 生成

UUID 生成

版本
大小寫
數量
命名空間
字符串
UUID 格式校驗 - UUID 版本识别

UUID 格式校驗

使用說明

可能是全网最强大的 UUID 生成工具!

本工具支持第一版、第三版、第四版(最常用)、第五版 的 UUID 生成,支持同时生成多个,支持设置输出的大小寫!同时还带有 UUID 校驗功能,可以快速判断一串字符串是否是合法的 UUID 以及获取 UUID 版本。

UUID 简介

UUID 的全称是 Universally Unique Identifier,中文为通用唯一识别码。由一组 32 位数的 16 进制数字所构成,以连字号分为五段,表现形式为 8-4-4-4-12 的 32 个字符

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

如:1bc574b2-8239-4179-9950-292af540bfb0

其中 M 与 N 都有特殊含义

  • M 表示 UUID 版本,目前有 8 个版本
  • 数字 N 的一至三个最高有效位表示 UUID 变体,目前只会出现 8,9,a,b 四种情况。

UUID 的版本

v1 (timestamp)

根据日期时间和 MAC 地址生成

  • 48bit 主机的 Mac 地址
  • 60bit 时间戳 (13-14bit 作为时间序列)

每个节点每秒钟可生成 1630 亿个,也就是说每毫秒 163 个

缺點:

  • 机器的 MAC 地址出厂后不能保证完全唯一,且之后 MAC 地址也可手动修改
  • MAC 地址的暴露会造成了隐私与安全问题
  • 若一台機器上的兩個進程同時跑,有可能出現重複問題

v2 (timestamp)

根据标识符(通常是组或用户 ID)、日期时间和 MAC 地址生成;

  • 48bit 主机的 Mac 地址
  • 40bit 域名/ID
  • 28bit 时间戳(6bit 作为时间序列)

允许一个节点存在 1 万亿个 域名/ID 对象,每个对象每 7 秒产生一个 UUID

一般很少用到

v3 (namespace)

确定性 UUID,通过散列(hashing)命名空間空间(namespace)标识符和名称生成

使用 MD5 作为散列算法,相对来说容易碰撞,不推荐使用,建议用 v5 代替

v4 (random)

使用隨機數或僞隨機數生成

  • 6bit 标记版本
  • 122bit 随机数

每秒生成 10 亿个,大约需要 85 年才有重复的可能,所以在正常应用情形下这种碰撞概率可以忽略

这个版本的 UUID 是最常用的

v5 (namespace)

确定性 UUID,通过散列(hashing)命名空間空间(namespace)标识符和名称生成

使用 SHA1 作为散列算法

SHA1 比 MD5 更不容易碰撞

可用于加密用户密码,比如我的密码是 123456,sha1 固定为 7c4a8d09ca3762af61e59520943dc26494f8941b,所以一旦数据库数据泄露,很容易枚举出简单的密码原文。但使用 v5 算法后加入了特定的 namespace,会得到完全不同,且不具备普遍性的 UUID 串,这样就很难破解出密码原文了。

v6~v8

暫時還沒有應用

總結

因为时间戳和随机数的唯一性,v1 和 v4 总是生成唯一的标识符。若希望对给定的一个字符串总是能生成相同的 UUID,则需要使用 v3 或 v5

贊助商廣告
xxfseo.com