工具哇!

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

赞助商广告