工具哇!

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