一文入门 UUID

2023-12-13 05:39:58

UUID简介

UUID代表Universally Unique Identifier,译为全局一标识符。它是一种由软件构建的标准化身份验证方案,用于确保跨多个上下文中的对象都具有唯一性。UUID在各种系统之间确保了严格的唯一性,因此即使在大型分布式环境中,也能确保不会出现冲突。

UUID包含128位(16字节)的数据,通常为32个字符。以下是一个样本UUID的表示形式:

550e8400-e29b-41d4-a716-446655440000

UUID由以下部分组成:

  • 时间戳低位
  • 版本号
  • 时间戳中位
  • 时间戳高位
  • 钟序列
  • 节点ID(通常为MAC地址)

根据生成策略的不同,UUID有以下几种版本:

  • 版本1:基于时间和机器的MAC地址生成。可能会泄露机器MAC地址。
  • 版本2:基于时间戳、MAC地址以及POSIX UID/GID生成,用于标识POSIX用户或组。
  • 版本3:基于MD5散列和命名空间(例如URL、域名、对象ID等)生成。
  • 版本4:完全基于随机数生成,保证了很高的随机性。
  • 版本5:基于SHA-1散列和命名空间生成。

在实践中,版本4的UUID最常用,因为它不涉及机器的MAC地址,也不依赖具体的命名空间。

各个版本的实践用途

UUID的各个版本在不同的场合和需求中有着各自的应用。以下是对每个版本在实践中的一些可能用途的解决:

  • 版本1:因为此版本基于时间和机器的MAC地址生成,所以对于需要极小概率的碰撞和能追踪数据产生机器和时间的场景好用。如日志分析和复杂系统的事件追踪等,因为它提供了时间戳和MAC地址信息。但需要注意的是,版本1 UUID可能会泄露生成UUID的机器的MAC地址和精确时间,这可能是一种安全隐患。
  • 版本2:这个版本是为POSIX系统设计的,其中包含了用户的id信息,所以在某些老的或特定的系统或协议中可能仍有使用。
  • 版本3:这种UUID一般用于生成根据某些对象(如IP地址,域名,文件等)的唯一标识符。例如,当你需要根据URL,ISO的对象标识符或者其他已经存在的标识符来生成UUID时。但是,由于MD5被发现有潜在的安全隐患,这个版本已经不是非常推荐使用。
  • 版本4:这是目前最常用的版本,因为它是基于随机数的,可以在任何情况下使用,只要你需要一个唯一标识符即可。这使得它用途非常广泛,例如,web应用中的会话ID、数据库的主键等。
  • 版本5:与版本3类似,但使用了更安全的SHA-1散列进行计算。当你需要一个可以和某些唯一标识符相关联的UUID,并且对安全性有更高要求时,可以选择使用这个版本。

请注意,你应该根据实际需求和现有的工具支持情况选择合适版本的UUID。

文章来源:https://blog.csdn.net/gulugulu1103/article/details/134952281
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。