Ir para o conteúdo principal

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.
Versão do UUID

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.

Mais guias de UUID