¿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 (por lo general RFC 4122) según los bits 64-65
- Components: Extraer sello de tiempo, ID de nodo u otros datos según la versión
- Hora de generación: Para UUID basados en tiempo (v1, v6, v7)
Example: 123e4567-e89b-12d3-a456-426614174000 es un UUID de versión 1 con el sello de tiempo 2228-06-25T20:01:28.545Z cuando se muestra con la precisión de milisegundos de JavaScript.
Resumen de la estructura del UUID
| Format | Description |
|---|---|
| 8-4-4-4-12 | 32 dígitos hexadecimales agrupados con guiones |
| Bits de la versión | Bits 48-51 (13.º dígito) |
| Bits de la variante | Bits 64-65 (17.º dígito) |
El número de versión aparece como el primer dígito hexadecimal en el tercer grupo (p. ej., 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 |
|
Extracción de sello de tiempo de los UUID
| Tipo de UUID | Método de extracción de tiempo | Epoch |
|---|---|---|
| UUID v1 | Combinar los bits 0-31, 32-47 y 48-59, reordenando los componentes del sello de tiempo | 15 de octubre de 1582 |
| UUID v6 | Combinar los bits 0-47 con los bits 52-63; los bits 48-51 son la versión y se excluyen | 15 de octubre de 1582 |
| UUID v7 | Extraer los bits 0-47 (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}$Ejemplo de sello de tiempo de UUID v7
017f22e2-79b0-7cc3-98c4-dc0c0c07398f es el vector de prueba RFC 9562 para UUIDv7. Sus primeros 48 bits son milisegundos Unix, que decodifican a 2022-02-22T19:22:22.000Z, 1645557742000 milisegundos, o 1645557742 seconds.
Generar un nuevo UUID v7, o continuar con el Convertidor de marca de tiempo Unix. Estos enlaces no incluyen el UUID que ingresaste.
Aplicaciones prácticas
- Análisis forense: Determinar cuándo se crearon los IDs
- Debugging: Rastrear el comportamiento del sistema mediante los sellos de tiempo de los IDs
- Auditing: Validar la integridad cronológica
- Comprobaciones de formato: Detectar IDs malformados; un UUID válido no prueba autenticidad
- Recuperación de datos: Reconstruir relaciones temporales
- Migraciones de sistema: Comprender detalles de implementaciones heredadas de UUID
Extracción de dirección MAC (v1/v6)
Para UUID v1 y v6, a menudo se 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
- Formatear con dos puntos como XX:XX:XX:XX:XX:XX
- Comprobar si la dirección MAC es real o aleatoria examinando el bit de multidifusión
Si el primer byte tiene establecido el bit 0x01, 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 y no contiene información de tiempo. No se puede determinar la hora de creación a partir de un UUID v4.
¿Qué tan precisos son los sellos de tiempo en los UUID basados en tiempo?
Los sellos de tiempo de UUID v1/v6 tienen precisión de 100 nanosegundos. UUID v7 tiene precisión de milisegundos. Sin embargo, la precisión real del reloj del sistema puede variar.
¿Puedo convertir entre versiones de UUID?
No, no se puede convertir directamente entre versiones preservando el mismo valor de identificador. Las 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 que lo generó. Sin embargo, muchas implementaciones modernas la aleatorizan por privacidad.
¿Cómo puedo saber si un UUID es válido?
Compruebe 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 los bits de variante (17.º carácter es 8, 9, A o B para UUIDs RFC 4122).