Hash e Segurança

Gerador de Hash FNV

Calcule hashes FNV-1 ou FNV-1a em 32 ou 64 bits a partir de qualquer texto.

Avalie esta ferramenta

Como usar Gerador de Hash FNV

  1. Digite ou cole seu texto na caixa.
  2. Escolha a variante — o FNV-1a costuma ser o mais recomendado.
  3. O hash aparece enquanto você digita; clique em Copiar para obtê-lo.

Sobre Gerador de Hash FNV

FNV — Fowler–Noll–Vo, batizado em homenagem a Glenn Fowler, Landon Curt Noll e Phong Vo — é um dos grandes algoritmos pequenos. O algoritmo inteiro é um laço sobre os bytes que não faz nada além de uma multiplicação por um número primo fixo e um XOR. Não há tabelas, nem rodadas, nem buffers; cabe em poucas linhas em qualquer linguagem, roda em qualquer lugar e é rápido o suficiente para que ninguém se preocupe em otimizá-lo. É por isso que ele aparece dentro de tabelas hash, tabelas de símbolos, caches e interpretadores por toda parte.

As duas variantes parecem quase idênticas e a diferença é fácil de passar despercebida. O FNV-1a se diferencia do FNV-1 apenas trocando a ordem do XOR e da multiplicação — essa é toda a mudança. Isso acaba fazendo diferença: fazer o XOR primeiro proporciona uma distribuição visivelmente melhor, especialmente em entradas curtas e em entradas que diferem apenas no último byte, exatamente a situação que uma tabela hash enfrenta quando as chaves são parecidas com user_1, user_2, user_3. É por isso que o FNV-1a costuma ser a variante recomendada, e por isso é o padrão aqui. Escolha o FNV-1 apenas quando precisar corresponder a um sistema existente que já o utiliza.

O tamanho é a outra escolha. As variantes de 32 bits fornecem 8 caracteres hexadecimais; as de 64 bits fornecem 16. Mais largo não significa "mais seguro" — significa apenas menos colisões acidentais quando você está fazendo hash de muitas chaves, então vale a pena usar 64 bits quando o número de chaves chega às milhões. Nenhuma das variantes do FNV é criptográfica. Elas são projetadas para velocidade e dispersão, não resistem a nada, e criar duas strings com o mesmo hash FNV é simples. Use-as para buscas e distribuição em baldes (bucketing); use SHA-256 quando a resposta precisar resistir a alguém que queira que ela não resista.

Perguntas frequentes

Qual é a diferença entre FNV-1 e FNV-1a?

Apenas a ordem de duas operações: o FNV-1 multiplica e depois faz XOR, o FNV-1a faz XOR e depois multiplica. Essa única troca dá ao FNV-1a uma distribuição melhor, por isso é o normalmente recomendado.

Devo usar a variante de 32 bits ou de 64 bits?

32 bits (8 caracteres hexadecimais) é adequado para tabelas hash comuns. Passe para 64 bits (16 caracteres hexadecimais) quando estiver fazendo hash de milhões de chaves e quiser que colisões acidentais permaneçam raras.

O FNV é seguro?

Não. O FNV é um hash não criptográfico feito para velocidade. Nunca deve ser usado para senhas, assinaturas ou integridade contra um atacante — colisões podem ser construídas deliberadamente com pouco esforço.

Para que o FNV é realmente bom?

Tabelas hash, dicionários, tabelas de símbolos, chaves de cache, sharding e distribuição em baldes — qualquer lugar onde você precise de um número rápido e bem distribuído a partir de uma string e ninguém esteja tentando te enganar.

Meu texto é enviado para algum lugar?

Seu texto é enviado ao nosso servidor para ser hasheado, porque os navegadores não conseguem calcular FNV. Ele é hasheado e descartado imediatamente — nunca registrado, nunca armazenado.