Gerar valores UUID v5 determinísticos
Um UUID versão 5 é derivado de um UUID de namespace e de um nome usando SHA-1. Quem calcular o hash do mesmo namespace e do mesmo nome obtém exatamente o mesmo UUID, então os IDs podem ser recalculados em vez de armazenados.
Exemplo resolvido
- Namespace (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Nome
- example.com
- Resultado
- cfbff0d1-9375-5685-968c-48ce8b15ae17
- Namespace (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Nome
- Example.com
- Resultado
- a1feb884-07f5-5a14-8edb-cb659a7fbadc
Como funciona
- Os 16 bytes do namespace são unidos aos bytes UTF-8 do nome e processados com SHA-1. Os primeiros 16 bytes do resumo formam o UUID depois que os bits de versão (5) e de variante são definidos.
- A RFC 9562 predefine namespaces para nomes DNS, URLs, OIDs ISO e nomes distintos X.500. Qualquer UUID próprio também pode servir como namespace privado.
- Os nomes são comparados byte a byte: maiúsculas, espaços e barras finais mudam o resultado, então normalize os nomes antes. Como o resultado é previsível, nunca use um UUID v5 como segredo.
Gere de 1 a 100 UUIDs de uma vez
Namespace DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (padrão)
O nome a ser hash (por exemplo, nome de domínio, e-mail, etc.)
Sobre UUIDs
UUID v1: UUIDs baseados em tempo que incluem um carimbo de data/hora e o endereço MAC do computador que gera o UUID. Útil quando você precisa saber quando o UUID foi criado.
UUID v4: UUIDs gerados aleatoriamente. Esta é a versão mais comumente usada e fornece boa exclusividade com vazamento mínimo de informações.
UUID v5: UUIDs baseados em nome usando hash SHA-1. Dado o mesmo namespace e nome, você sempre obterá o mesmo UUID. Útil para geração determinística de UUID.