使用哪个UUID版本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (968)

应该使用哪个版本的UUID?我看到了很多解释每个版本需要什么的线程,但是我很难找出哪些应用程序最适合。

提问于
用户回答回答于

如果你想要一个随机数,使用一个随机数字库。如果你想要一个有效的0.00 ...更多的0这里的唯一标识符... 001%的机会碰撞,你应该使用UUIDv1。

UUIDv1不安全。这并不意味着。它是唯一的,不是不可猜测的。UUIDv1使用当前的时间戳,外加一个机器标识符,加上一些随机的东西来创建一个永远不会被该算法生成的数字。这适用于交易ID(即使每个人都在执行数百万次交易)。

说实话,我不明白为什么UUIDv4存在...从阅读RFC4122,它看起来像版本不能消除碰撞的可能性。这只是一个随机数发生器。如果这是真的,那么世界上最好有两台机器的机会最终会创造出相同的“UUID”v4(引号是因为没有保证通用机器的机制)。在这种情况下,我不认为这个算法属于一个描述生成唯一值的方法的RFC。它属于一个关于产生随机性的RFC。对于一组随机数字:

chance_of_collision = 1 - (set_size! / (set_size - tries)!) / (set_size ^ tries)
用户回答回答于

有两种不同的方式来生成UUID。

如果你只需要一个唯一的ID,你想要一个版本1或版本4。

  • 版本1:这将基于网卡MAC地址和计时器生成唯一的ID。这些ID很容易预测(给出一个,我可能会猜到另一个),可以追溯到你的网卡。不建议创建这些。
  • 版本4:这些是从随机(或伪随机)数字生成的。如果你只需要生成一个UUID,这可能是你想要的。

如果你需要始终从给定名称生成相同的UUID,则需要版本3或版本5。

  • 版本3:这将从名称空间和名称的MD5哈希生成一个唯一的ID。如果您需要向后兼容(使用另一个从名称生成UUID的系统),请使用此选项。
  • 版本5:这将从名称空间和名称的SHA-1哈希生成唯一的ID。这是首选版本。

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问19 回答
  • 学生

    3 粉丝476 提问13 回答
  • uncle_light

    5 粉丝518 提问12 回答
  • 最爱开车啦

    8 粉丝503 提问12 回答

扫码关注云+社区

领取腾讯云代金券