Calculadora de código de hash Fowler-Noll-Vo FNV1a-32
Publicado: 18 de fevereiro de 2025 às 00:09:41 UTC
Calculadora de código hash que utiliza a função hash Fowler-Noll-Vo 1a de 32 bits (FNV1a-32) para calcular um código hash com base na introdução de texto ou no carregamento de ficheiros.Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
A função hash FNV-1a de 32 bits faz parte da família de funções hash Fowler–Noll–Vo (FNV), concebida para um hash rápido, mantendo uma boa distribuição dos valores de hash. É comummente utilizado em aplicações como tabelas de hash, checksums e pesquisas de dados. Produz um código hash de 32 bits (4 bytes), geralmente representado como um número hexadecimal de 8 dígitos.
A variante FNV-1a é uma versão melhorada da função FNV-1 original com melhor segurança.
Divulgação completa: eu não escrevi a implementação específica da função hash usada nesta página. Trata-se de uma função padrão incluída na linguagem de programação PHP. Apenas criei a interface Web para a tornar publicamente disponível aqui por conveniência.
Sobre o algoritmo de hash Fowler-Noll-Vo FNV-1a de 32 bits
Não sou matemático, mas tentarei explicar esta função hash usando uma analogia que os meus colegas não matemáticos possam compreender. Se preferir uma explicação cientificamente correta e assustadoramente matemática, tenho a certeza de que poderá encontrá-la noutro lugar ;-)
Primeiro, vamos pensar no algoritmo FNV-1 como uma receita para fazer um batido especial. Cada ingrediente adicionado (como fruta, leite ou mel) representa um dado - como letras, números ou até mesmo um ficheiro inteiro.
Agora, o objetivo é misturar estes ingredientes de uma forma muito específica para que até a mais pequena alteração na receita (como adicionar um mirtilo extra) faça com que o sabor do batido seja completamente diferente. É assim que funcionam as funções hash: criam um "sabor" (ou valor hash) único para cada conjunto único de ingredientes (ou dados de entrada).
A forma como o algoritmo FNV-1 o faz é um processo de várias etapas:
Passo 1: Comece com uma base (base offset)
Pense nisto como se estivesse a deitar uma base especial de batido no seu liquidificador. Esta base é sempre a mesma, independentemente dos ingredientes que adiciona. No FNV-1, isto é chamado de "base de compensação" - apenas um número inicial sofisticado.
Passo 2: Adicionar os ingredientes um a um (processamento de dados)
Agora começa a adicionar os ingredientes, um de cada vez - digamos, um morango, depois uma banana e depois um pouco de mel. Cada um deles representa um byte de dados.
Passo 3: Misture com um multiplicador secreto (o FNV Prime)
Depois de adicionar cada ingrediente, carrega no botão de misturar, mas aqui está a diferença: o liquidificador multiplica tudo por um "número mágico" secreto chamado FNV primo. Ajuda a misturar as coisas muito bem.
Passo 4: Adicione uma pitada de magia (operação XOR)
Antes de adicionar o próximo ingrediente, polvilha-se um pouco de pó mágico (esta é a operação XOR). É como mudar o sabor de formas inesperadas, garantindo que até pequenas mudanças fazem uma grande diferença.
Passo 5: repita até terminar
Continue a misturar e a polvilhar magia após cada novo ingrediente até processar tudo.
Passo 6: Smoothie final (valor de hash)
Quando terminar, verta o batido. O sabor final (o valor de hash) é exclusivo daquela combinação exata de ingredientes. Se tivesse adicionado pelo menos um mirtilo a mais, o sabor seria completamente diferente.
A versão aqui apresentada é a versão melhorada do FNV-1a de 32 bits. Se precisar da versão original, também tenho uma calculadora para isso: Calculadora de código de hash Fowler-Noll-Vo FNV1-32