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.
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.