¿Qué es la decodificación de UUID?
Decodificación de UUID es el proceso de analizar un UUID para extraer información sobre su:
- Version: Qué versión de UUID (1-8) basada en 4 bits en la posición 48-51
- Variant: Qué variante de UUID (usualmente RFC 4122) basada en bits 64-65
- Components: Extracción de marca de tiempo, ID de nodo u otros datos basados en la versión
- Tiempo de generación: Para UUIDs basados en tiempo (v1, v6, v7)
Example: 123e4567-e89b-12d3-a456-426614174000
es un UUID Versión 1 creado el 2018-10-03 09:45:32 UTC.
Resumen de la estructura UUID
Format | Description |
---|---|
8-4-4-4-12 | 32 dígitos hexadecimales agrupados con guiones |
Bits de versión | Bits 48-51 (dígito 13) |
Bits de variante | Bits 64-65 (dígito 17) |
El número de versión aparece como el primer dígito hex en el tercer grupo (por ejemplo, 123e4567-e89b-12d3-a456-426614174000
para la versión 1).
Decodificación por versión de UUID
Version | Qué se puede decodificar |
---|---|
UUID v1 |
|
UUID v3/v5 |
|
UUID v4 |
|
UUID v6 |
|
UUID v7 |
|
ULID |
|
Extracción de marca de tiempo de UUIDs
Tipo de UUID | Método de extracción de tiempo | Epoch |
---|---|---|
UUID v1 | Combinar bits 0-31, 32-47 y 48-59, reordenando componentes de la marca de tiempo | 15 de octubre de 1582 |
UUID v6 | Extraer bits 0-59 (ya en orden correcto) | 15 de octubre de 1582 |
UUID v7 | Extraer bits 0-47 (milisegundos Unix) | 1 de enero de 1970 |
ULID | Decodificar los primeros 10 caracteres Base32 para obtener milisegundos Unix de 48 bits | 1 de enero de 1970 |
Reglas de validación UUID
- Verificación de formato: 8-4-4-4-12 dígitos hexadecimales con guiones
- Verificación de versión: El carácter 13 debe ser 1-8
- Verificación de variante: El carácter 17 debe ser 8, 9, A o B (para RFC 4122)
Expresión regular para la validación básica de UUID:
^[0-9a-f]8-[0-9a-f]4-[1-8][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$
Aplicaciones prácticas
- Análisis forense: Determinar cuándo se crearon los IDs
- Debugging: Rastrear el comportamiento del sistema a través de marcas de tiempo de ID
- Auditing: Validar la integridad cronológica
- Análisis de seguridad: Detectando IDs falsificados o manipulados
- Recuperación de datos: Reconstrucción de relaciones temporales
- Migraciones de sistema: Entendiendo detalles de implementación de UUID heredados
Extracción de dirección MAC (v1/v6)
Para UUID v1 y v6, a menudo puede extraer el identificador de nodo (dirección MAC) si no fue aleatorizado durante la generación:
- Extraer los últimos 12 dígitos hexadecimales (48 bits) del UUID
- Formato con dos puntos como XX:XX:XX:XX:XX:XX
- Verifique si la dirección MAC es real o aleatoria examinando el bit multicast
Si el primer byte tiene el bit 0x01 activado, probablemente sea un ID de nodo aleatorio en lugar de una dirección MAC real.
Preguntas frecuentes
¿Puedo determinar exactamente cuándo se creó un UUID v4?
No. UUID v4 es puramente aleatorio sin información de marca de tiempo. No se puede determinar el momento de creación a partir de un valor UUID v4.
¿Qué tan precisas son las marcas de tiempo en UUIDs basados en tiempo?
Las marcas de tiempo de UUID v1/v6 tienen precisión de 100 nanosegundos. UUID v7 y ULID tienen precisión en milisegundos. Sin embargo, la precisión real del reloj del sistema puede variar.
¿Puedo convertir entre versiones de UUID?
No, no puede convertir directamente entre versiones preservando el mismo valor de identificador. Las diferentes versiones tienen estructuras fundamentalmente diferentes.
¿Puedo identificar la computadora que generó un UUID v1?
Si el ID de nodo no fue aleatorizado, un UUID v1 puede contener la dirección MAC del sistema generador. Sin embargo, muchas implementaciones modernas aleatorizan esto por privacidad.
¿Cómo puedo saber si un UUID es válido?
Verifique el formato (8-4-4-4-12 dígitos hexadecimales), confirme que el dígito de versión (carácter 13) sea 1-8, y confirme los bits de variante (carácter 17 es 8, 9, A o B para UUIDs RFC 4122).