美文网首页
UUID 不同版本的区别及选择

UUID 不同版本的区别及选择

作者: UULU | 来源:发表于2019-08-13 16:40 被阅读0次

    全局唯一标识 (Universally unique identifier)

    格式

    格式为:00000000-0000-0000-0000-000000000000
    总长度 36,由 32 个 16 进制字符和 4 个连字符组成。连字符仅用于增加可读性,实际的精度为
    一个 16 进制字符为 2^4=4bit,32 个则为 32*4bit=128bit

    版本区别

    Version 1

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

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

    Version 2

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

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

    Version 3 和 Version 5

    将值与指定的命名空间拼接后,做 hash 运算,再做一些额外的固定变换得到最终的 UUID
    V5 区别于 V3 是使用了更不容易碰撞的 hash 算法,前者 sha1,后者 md5。
    注意值不变的情况下生成的 UUID 相同

    Version 4

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

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

    版本选择

    • V4 - 首选
    • V1 - 如果需要反向解析主机 Mac 地址
    • V5 - 如果需要根据特定的值生成,而且在值不变的情况下生成的 UUID 不变。
      可用于加密用户密码,比如我的密码是 123456,sha1 固定为7c4a8d09ca3762af61e59520943dc26494f8941b,所以一旦数据库数据泄露,很容易枚举出简单的密码原文。但使用 v5 算法后加入了特定的 namespace,会得到完全不同,切不具备普遍性的 UUID 串,这样就很难破解出密码原文了。
    • V3 - 不推荐,用 V5 替代
    • V2 - 一般不会用到

    参考

    WIKI

    相关文章

      网友评论

          本文标题:UUID 不同版本的区别及选择

          本文链接:https://www.haomeiwen.com/subject/swbkkctx.html