Miklix

Calculadora de código hash MurmurHash3A

Publicado: 18 de fevereiro de 2025 às 00:39:32 UTC

Calculadora de código hash que utiliza a função hash MurmurHash3A para calcular um código hash com base na introdução de texto ou no carregamento de ficheiros.

Esta página foi traduzida automaticamente do inglês para a tornar acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, pelo que podem ocorrer erros. Se preferir, pode ver a versão original em inglês aqui:

MurmurHash3A Hash Code Calculator

MurmurHash3 é uma função de hash não criptográfica concebida por Austin Appleby em 2008. É amplamente utilizada para hash de uso geral devido à sua velocidade, simplicidade e boas propriedades de distribuição. As funções MurmurHash são particularmente eficazes para estruturas de dados baseadas em hash, como tabelas de hash, filtros bloom e sistemas de desduplicação de dados.

A variante apresentada nesta página é a variante 3A, otimizada para sistemas de 32 bits. Produz códigos hash de 32 bits (4 bytes), normalmente representados como um número hexadecimal de 8 dígitos.

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.


Calcular o novo código Hash

Os dados enviados ou os ficheiros carregados através deste formulário só serão mantidos no servidor durante o tempo necessário para gerar o código hash solicitado. Serão eliminados imediatamente antes de o resultado ser devolvido ao seu browser.

Dados de entrada:



O texto enviado é codificado em UTF-8. Uma vez que as funções de hash operam em dados binários, o resultado será diferente do que se o texto estivesse noutra codificação. Se precisar de calcular um hash de um texto numa codificação específica, deve carregar um ficheiro.



Sobre o algoritmo de hash MurmurHash3A

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 matemática completa e cientificamente correcta, tenho a certeza que poderá encontrá-la noutro lugar ;-)

Agora, imagine que tem uma caixa grande de peças LEGO. Cada vez que os organiza de uma forma específica, tira uma fotografia. Não importa quão grande ou colorido seja o arranjo, a câmara dar-lhe-á sempre uma fotografia pequena e de tamanho fixo. Esta foto representa a sua criação LEGO, mas de forma compacta.

MurmurHash3 faz algo semelhante com dados. Pega em qualquer tipo de dados (texto, números, ficheiros) e reduz-nos a um pequeno e fixo valor de "impressão digital" ou hash. Esta impressão digital ajuda os computadores a identificar, classificar e comparar dados rapidamente sem ter de olhar para tudo.

Outra analogia seria como cozer um bolo e MurmurHash3 é a receita para transformar esse bolo num pequeno bolinho (o hash). Este seria um processo de três etapas:

Passo 1: Corte em pedaços (quebrando os dados)

  • Primeiro, o MurmurHash3 divide os seus dados em pedaços iguais, como se estivesse a cortar um bolo em quadrados iguais.

Passo 2: Misture como um louco (misturando os pedaços)

  • Cada peça passa por um processo de mistura selvagem:
    • Inversão: como virar uma panqueca, reorganiza os pedaços.
    • Mexendo: Adiciona ingredientes aleatórios (operações matemáticas) para misturar as coisas.
    • Compressão: Comprime os dados para garantir que nenhuma parte original se destaca.

Etapa 3: Teste de sabor final (finalização)

  • Depois de misturar todos os pedaços, o MurmurHash3 dá uma última mexida para garantir que até a mais pequena alteração aos dados originais alteraria totalmente o sabor (o hash).
Partilhar no BlueskyPartilhar no FacebookPartilhar no LinkedInPartilhar no TumblrPartilhar em XPartilhar no LinkedInFixar no Pinterest

Mikkel Bang Christensen

Sobre o autor

Mikkel Bang Christensen
Mikkel é o criador e proprietário do miklix.com. Tem mais de 20 anos de experiência como programador informático/desenvolvedor de software profissional e trabalha atualmente a tempo inteiro para uma grande empresa europeia de TI. Quando não está a escrever no blogue, dedica o seu tempo livre a um vasto leque de interesses, passatempos e actividades, que podem, em certa medida, refletir-se na variedade de tópicos abordados neste sítio Web.