Ir al contenido principal

Generar valores UUID v5 deterministas

Un UUID versión 5 se obtiene de un UUID de espacio de nombres y un nombre mediante SHA-1. Quien aplique el hash al mismo espacio de nombres y al mismo nombre obtendrá exactamente el mismo UUID, así que los ID se pueden recalcular en lugar de almacenarse.

Ejemplo resuelto

Espacio de nombres (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Nombre
example.com
Resultado
cfbff0d1-9375-5685-968c-48ce8b15ae17
Espacio de nombres (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Nombre
Example.com
Resultado
a1feb884-07f5-5a14-8edb-cb659a7fbadc

Cómo funciona

  • Los 16 bytes del espacio de nombres se unen a los bytes UTF-8 del nombre y se procesan con SHA-1. Los primeros 16 bytes del resumen forman el UUID tras fijar los bits de versión (5) y de variante.
  • RFC 9562 predefine espacios de nombres para nombres DNS, URL, OID de ISO y nombres distintivos X.500. Cualquier UUID propio también puede servir como espacio de nombres privado.
  • Los nombres se comparan byte a byte: mayúsculas, espacios y barras finales cambian el resultado, así que normaliza los nombres antes. Como el resultado es predecible, nunca uses un UUID v5 como secreto.
Versión de UUID

Genere de 1 a 100 UUIDs a la vez

Espacio de nombres DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (predeterminado)

El nombre a hashear (por ejemplo, nombre de dominio, correo electrónico, etc.)

Acerca de los UUIDs

UUID v1: UUIDs basados en tiempo que incluyen una marca de tiempo y la dirección MAC de la computadora que genera el UUID. Útil cuando necesita saber cuándo se creó el UUID.

UUID v4: UUIDs generados aleatoriamente. Esta es la versión más comúnmente utilizada y proporciona buena unicidad con fuga mínima de información.

UUID v5: UUIDs basados en nombres usando hash SHA-1. Dado el mismo espacio de nombres y nombre, siempre obtendrá el mismo UUID. Útil para generación determinística de UUID.

Más guías de UUID