Saltar al contenido principal

Generador de UUID Versión 1

UUIDv1 • Marca Gregoriana y MAC Simulada
00000000-0000-0000-0000-000000000000
Encapsular:

Generar UUIDs Masivos

Máx 5.000
Formato y Estructura

Listo

No batch active
Estándar HeredadoRFC 9562 Sección 5.1 / RFC 4122

Especificación Técnica UUID Versión 1 (Marca Temporal Gregoriana)

UUIDv1 genera identificadores de 128 bits basados en una marca de tiempo gregoriana de 60 bits (en intervalos de 100 ns desde el 15 de octubre de 1582) junto con una secuencia de reloj y la dirección de nodo.

Distribución de Bits y Estructura Binaria

Distribución detallada de 128 bits según las normas RFC.

CampoRango de BitsPropósito y Descripción
time_low32 bits (0-31)32 bits inferiores de la marca temporal gregoriana.
time_mid16 bits (32-47)16 bits intermedios de la marca temporal.
time_hi_and_ver16 bits (48-63)4 bits versión (0001) + 12 bits superiores de marca temporal.
clock_seq16 bits (64-79)2 bits variante (10) + 14 bits contador de secuencia.
node48 bits (80-127)Dirección de nodo (multidifusión simulada aleatoria).

Ventajas y Fortalezas

  • Garantiza unicidad global al combinarse con hardware de red real.
  • Resolución temporal precisa de 100 nanosegundos.
!

Consideraciones y Desventajas

  • Riesgo de privacidad: la especificación original expone la dirección MAC del host.
  • No se ordena cronológicamente como texto porque los bits menos significativos están al principio.

Recomendado para

  • Sistemas distribuidos heredados diseñados bajo RFC 4122 v1.
  • Columnas TimeUUID en Apache Cassandra y ScyllaDB.

Cuándo evitar

  • Nuevas arquitecturas web y en la nube (use UUIDv7).

Ejemplos de Implementación en Código

Python Standard LibraryPython
import uuid

id = uuid.uuid1()
print(id)

Preguntas Frecuentes

¿Este generador expone mi dirección MAC real?
No. Siguiendo las recomendaciones de RFC 9562, usamos una dirección de nodo de 48 bits aleatoria para proteger su privacidad.
¿Por qué UUIDv1 no se ordena cronológicamente?
Porque los bits de menor peso temporal se sitúan al comienzo de la cadena (time_low).