UUID 解码器与时间戳提取器

解码 UUID v1、v6 和 v7 的时间戳为 ISO UTC 和 Unix 时间,并检查版本和元数据。

尝试这些示例:

什么是 UUID 解码?

UUID 解码 是分析 UUID 以提取有关其以下内容的过程:

  • Version:基于位置 48-51 的 4 位判断属于哪个 UUID 版本(1-8)
  • Variant:基于位 64-65 判断属于哪个 UUID 变体(通常为 RFC 4122)
  • Components:基于版本提取时间戳、节点 ID 或其他数据
  • 生成时间:对于基于时间的 UUID(v1、v6、v7)

Example: 123e4567-e89b-12d3-a456-426614174000 是具有时间戳的版本 1 UUID,时间戳为 2228-06-25T20:01:28.545Z 以 JavaScript 毫秒精度显示时。

UUID 结构概述

FormatDescription
8-4-4-4-1232 个十六进制位,用连字符分组
版本位位 48-51(第 13 个字符)
变体位位 64-65(第 17 位十六进制)

版本号出现在第三组的第一个十六进制数字中(例如, 123e4567-e89b-12d3-a456-426614174000 用于版本 1)。

按 UUID 版本解码

Version可以解码的内容
UUID v1
  • 时间戳(100 纳秒精度,自 1582 年 10 月 15 日起)
  • MAC 地址(如果未随机化)
  • 时钟序列(用于避免冲突)
UUID v3/v5
  • 命名空间和名称无法从哈希中恢复
  • 只有在知道命名空间和名称时才能重新生成
  • 可以区分 v3(MD5)和 v5(SHA-1)
UUID v4
  • 仅随机数据
  • 无可提取信息
  • 可以验证它是有效的 v4 UUID
UUID v6
  • 时间戳(100 纳秒精度,自 1582 年 10 月 15 日起)
  • MAC 地址(如果未随机化)
  • 时钟序列(用于避免冲突)
UUID v7
  • Unix 时间戳(毫秒精度)
  • 随机组件(不可解码)

从 UUID 提取时间戳

UUID 类型时间提取方法Epoch
UUID v1将位 0-31、32-47 和 48-59 合并,按需重新排序时间戳组件1582 年 10 月 15 日
UUID v6将位 0-47 与位 52-63 合并;位 48-51 为版本位,应排除1582 年 10 月 15 日
UUID v7提取位 0-47(Unix 毫秒)1970 年 1 月 1 日

UUID 验证规则

  • 格式检查:使用连字符的 8-4-4-4-12 十六进制数字格式
  • 版本检查:第 13 个字符必须是 1-8
  • 变体检查:第 17 个字符必须是 8、9、A 或 B(对于 RFC 4122)

用于基本 UUID 验证的正则表达式:

^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

UUID v7 时间戳示例

017f22e2-79b0-7cc3-98c4-dc0c0c07398f 是 RFC 9562 的 UUIDv7 测试向量。其前 48 位为 Unix 毫秒,解码为 2022-02-22T19:22:22.000Z, 1645557742000 毫秒,或 1645557742 seconds.

生成一个新的 UUID v7,或继续使用 Unix 时间戳转换器。这些链接不包含您输入的 UUID。

实际应用

  • 取证分析:确定 ID 的创建时间
  • Debugging:通过 ID 时间戳追踪系统行为
  • Auditing:验证时间顺序完整性
  • 格式检查:检测格式错误的 ID;一个有效的 UUID 并不证明其真实性
  • 数据恢复:重建时间关系
  • 系统迁移:理解遗留 UUID 实现细节

MAC 地址提取(v1/v6)

对于 UUID v1 和 v6,如果在生成时未随机化,通常可以提取节点标识符(MAC 地址):

  1. 从 UUID 中提取最后 12 个十六进制位(48 位)
  2. 按 XX:XX:XX:XX:XX:XX 格式加冒号
  3. 通过检查多播位来判断 MAC 地址是真实还是随机的

如果第一个字节的 0x01 位被置位,则很可能是随机的节点 ID,而非实际的 MAC 地址。

常见问题

我能确定 UUID v4 的确切创建时间吗?

不能。UUID v4 完全是随机的,不包含时间戳信息。无法从 UUID v4 值确定创建时间。

基于时间的 UUID 中的时间戳有多准确?

UUID v1/v6 的时间戳具有 100 纳秒精度。UUID v7 具有毫秒精度。然而,实际系统时钟的精度可能有所不同。

我可以在 UUID 版本之间互相转换吗?

不能直接在版本之间转换以保留相同的标识值。不同版本在结构上根本不同。

我能识别出生成 UUID v1 的计算机吗?

如果节点 ID 未随机化,UUID v1 可能包含生成系统的 MAC 地址。但是,许多现代实现为隐私起见对其进行了随机化。

如何判断 UUID 是否有效?

检查格式(8-4-4-4-12 十六进制位),验证版本位(第 13 个字符为 1-8),并确认变体位(RFC 4122 UUID 的第 17 个字符为 8、9、A 或 B)。

Resources