UUID 解码器 - 在线验证和解码 UUID

验证并解码 UUID,以提取版本、时间戳和其他元数据。支持所有 UUID 版本 (v1-v7),并提供详细分析。

尝试这些示例:

什么是UUID解码?

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

  • 版本:基于位置48-51的4位确定的UUID版本(1-8)
  • 变体:基于位64-65确定的UUID变体(通常是RFC 4122)
  • 组件:根据版本提取时间戳、节点ID或其他数据
  • 生成时间:对于基于时间的UUID(v1、v6、v7)

示例123e4567-e89b-12d3-a456-426614174000是一个在2018-10-03 09:45:32 UTC创建的版本1 UUID。

UUID结构概述

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

版本号显示为第三组中的第一个十六进制数字(例如,版本1为123e4567-e89b-12d3-a456-426614174000)。

按UUID版本解码

版本可以解码的内容
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时间戳(毫秒精度)
  • 随机组件(不可解码)
ULID
  • Unix时间戳(毫秒精度)
  • 随机组件(不可解码)

从UUID提取时间戳

UUID类型时间提取方法纪元
UUID v1组合位0-31、32-47和48-59,重新排序时间戳组件1582年10月15日
UUID v6提取位0-59(已经按正确顺序)1582年10月15日
UUID v7提取位0-47(Unix毫秒)1970年1月1日
ULID解码前10个Base32字符以获取48位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$

实际应用

  • 取证分析:确定ID创建的时间
  • 调试:通过ID时间戳跟踪系统行为
  • 审计:验证时间顺序完整性
  • 安全分析:检测伪造或被操纵的ID
  • 数据恢复:重建时间关系
  • 系统迁移:了解传统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和ULID具有毫秒精度。但是,实际系统时钟精度可能会有所不同。

我可以在UUID版本之间进行转换吗?

不能,在保持相同标识符值的同时,无法直接在版本之间转换。不同版本具有根本不同的结构。

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

如果节点ID未被随机化,UUID v1可能包含生成系统的MAC地址。但是,出于隐私考虑,许多现代实现会对此进行随机化。

如何判断UUID是否有效?

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

资源