通用唯一识别码:UUID

通用唯一识别码:UUID

1月 5, 2022
Algorithms, 系统设计, 密码学

UUID(Universally Unique Identifier,通用唯一识别码)的格式基本上是统一的,遵循一定的标准。最常见的 UUID 表示形式是由 3 2个十六进制数字组成,分为五组,这些组通过连字符(-)分隔,形式如下:

8-4-4-4-12

具体来说,一个标准的UUID看起来像这样:

123e4567-e89b-12d3-a456-426614174000

这个格式是由 RFC 4122 定义的,它规定了几种不同的 UUID 版本,每种版本有其生成方法,分别对应于不同的UUID生成规则,下面详细对比下。

UUID各版本优缺点 #

版本 1 #

基于时间的 UUID,主要依赖当前的时间戳及机器 MAC 地址,因此可以保证全球唯一性。

  • 优点:能基本保证全球唯一性
  • 缺点:使用了 MAC 地址,因此会暴露 MAC 地址和生成时间

版本 2 #

分布式安全的 UUID:将版本1的时间戳前四位换为 POSIX 的 UID 或 GID,很少使用

  • 优点:能保证全球唯一性
  • 缺点:很少使用,常用库基本没有实现

版本 3 #

基于名字空间的 UUID(MD5 版):基于指定的名字空间/名字生成 MD5 散列值得到,标准不推荐

  • 优点:不同名字空间或名字下的 UUID 是唯一的;相同名字空间及名字下得到的 UUID 保持重复。
  • 缺点:MD5 碰撞问题,只用于向后兼容,后续不再使用

版本 4 #

基于随机数的 UUID:基于随机数或伪随机数生成

  • 优点:实现简单
  • 缺点:重复几率可计算

版本 5 #

基于名字空间的 UUID(SHA1 版):将版本3的散列算法改为 SHA1

  • 优点:不同名字空间或名字下的 UUID 是唯一的;相同名字空间及名字下得到的 UUID 保持重复。
  • 缺点:SHA1计算相对耗时

总结 #

版本 1/2 适用于需要高度唯一性且无需重复的场景;

版本 3/5 适用于一定范围内唯一且需要或可能会重复生成 UUID 的环境下;

版本 4 适用于对唯一性要求不太严格且追求简单的场景。

参考 #

唯一ID生成算法剖析引UUID数据库自增ID雪花算法方案对比

面试官:怎么设计实现一个唯一ID生成器

通用唯一识别码 - 维基百科

本文共 731 字,上次修改于 Jul 9, 2024,以 CC 署名-非商业性使用-禁止演绎 4.0 国际 协议进行许可。

相关文章

» HTTPS 的 SSL/TLS 协议

» HTTPS 的密码学基础

» 跨域相关问题

» 实现限流的几种方案

» AES 对称加密学习笔记