¿Qué es la decodificación UUID?
La decodificación UUID es el proceso de analizar un UUID para extraer información sobre:
- Versión: Qué versión de UUID (1-8) basada en 4 bits en la posición 48-51
- Variante: Qué variante de UUID (generalmente RFC 4122) basada en los bits 64-65
- Componentes: Extracción de marca de tiempo, ID de nodo u otros datos según la versión
- Tiempo de generación: Para UUIDs basados en tiempo (v1, v6, v7)
Ejemplo: 123e4567-e89b-12d3-a456-426614174000
es un UUID Versión 1 creado el 2018-10-03 09:45:32 UTC.
Descripción general de la estructura UUID
Formato | Descripción |
---|---|
8-4-4-4-12 | 32 dígitos hexadecimales agrupados con guiones |
Bits de versión | Bits 48-51 (13º dígito) |
Bits de variante | Bits 64-65 (17º dígito) |
El número de versión aparece como el primer dígito hexadecimal en el tercer grupo (por ejemplo, 123e4567-e89b-12d3-a456-426614174000
para la versión 1).
Decodificación por versión de UUID
Versión | Qué se puede decodificar |
---|---|
UUID v1 |
|
UUID v3/v5 |
|
UUID v4 |
|
UUID v6 |
|
UUID v7 |
|
ULID |
|
Extracción de marcas de tiempo de UUIDs
Tipo de UUID | Método de extracción de tiempo | Época |
---|---|---|
UUID v1 | Combinar bits 0-31, 32-47 y 48-59, reordenando componentes de 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 48 bits de milisegundos Unix | 1 de enero de 1970 |
Reglas de validación de UUID
- Verificación de formato: 8-4-4-4-12 dígitos hexadecimales con guiones
- Verificación de versión: El 13º carácter debe ser 1-8
- Verificación de variante: El 17º carácter 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 ID
- Depuración: Rastrear el comportamiento del sistema a través de marcas de tiempo de ID
- Auditoría: Validar la integridad cronológica
- Análisis de seguridad: Detectar ID falsificados o manipulados
- Recuperación de datos: Reconstruir relaciones temporales
- Migraciones de sistemas: Comprender los 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 se aleatorizó durante la generación:
- Extraiga los últimos 12 dígitos hexadecimales (48 bits) del UUID
- Formatee con dos puntos como XX:XX:XX:XX:XX:XX
- Compruebe si la dirección MAC es real o aleatoria examinando el bit de multidifusión
Si el primer byte tiene el bit 0x01 establecido, es probable que sea un ID de nodo aleatorizado 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 UUID v1/v6 tienen una precisión de 100 nanosegundos. UUID v7 y ULID tienen una precisión de 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 mientras preserva 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), verifique que el dígito de versión (13º carácter) sea 1-8, y confirme que los bits de variante (17º carácter es 8, 9, A o B para UUIDs RFC 4122).