Calculadora hash FNV-1
Calcule o hash de um texto do jeito original de Fowler, Noll e Vo, multiplicando antes de misturar cada byte: foobar dá 31f0b262 em 32 bits, o valor que as tabelas de referência trazem para FNV-1, e não para FNV-1a. Escolha 32 ou 64 bits. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- foobar
- Resultado
- 31f0b262
- Fnv1
- 31f0b262
- Hex
- 31f0b262
- Bits
- 32
FNV-1 é um hash não criptográfico criado por Glenn Fowler, Landon Curt Noll e Phong Vo. Processa cada mensagem como uma sequência de bytes e, para cada byte, multiplica o hash em curso por um primo FNV fixo e depois aplica xor do byte no produto. Essa ordem multiplicar-depois-xor distingue FNV-1 de FNV-1a, que faz xor primeiro e multiplica depois; ambos compartilham as mesmas bases de deslocamento e primos, mas produzem resumos diferentes para toda cadeia não vazia. Esta ferramenta de hash FNV-1 aceita texto não vazio, codifica-o como UTF-8, executa o laço determinístico na largura pedida e devolve o resumo hex junto com o rótulo do algoritmo, a largura em bits, a contagem de bytes e um breve resumo.
O que o FNV-1 calcula e por que a largura e o comprimento hex importam
FNV-1 trata cada mensagem como uma sequência ordenada de octetos. O registrador do hash é inicializado com uma base de deslocamento publicada: hexadecimal oito um um c nove d c cinco para trinta e dois bits, ou c b f dois nove c e quatro oito quatro dois dois dois três dois cinco para sessenta e quatro bits.
Para cada byte de entrada o algoritmo multiplica o hash atual pelo primo FNV correspondente—zero um zero zero zero um nove três em trinta e dois bits, ou um zero zero zero zero zero zero zero um b três em sessenta e quatro bits—e depois aplica xor exclusivo do byte no produto, cortando na largura de bits escolhida.
Uma string de verificação bem conhecida é foobar: FNV-1 em trinta e dois bits produz três um f zero b dois seis dois, que coincide com tabelas de referência independentes da ordem original multiplicar-depois-xor. A resposta também devolve bits, o rótulo de algoritmo FNV-1-32 ou FNV-1-64, a contagem de bytes UTF-8 e o texto original para que clientes exibam uma linha de auditoria completa sem recalcular metadados.
Como FNV-1 não é resistente a colisões, não é com chave e não serve para senhas nem assinaturas, trate-o como identificador de conteúdo rápido ou semente de tabela hash—não como prova de autenticidade. Prefira resumos da família SHA quando a intenção de busca for hash criptográfico e não um hash não criptográfico Fowler–Noll–Vo.
Para que serve um hash FNV-1
Autores de runtimes de linguagem e estudantes de sistemas usam uma calculadora de hash FNV-1 para verificar à mão os passos multiplicar-depois-xor contra bases de deslocamento e primos publicados sem escrever um laço de multiplicação modular em cada linguagem. Plataformas de ensino e plugins LMS precisam de um oráculo determinístico que rejeite entrada vazia em vez de devolver a base de deslocamento sozinha, para que autoavaliadores distinga respostas ausentes de um resumo real.
Sites de conteúdo que ranqueiam por hash FNV-1 ou calculadora FNV1 se beneficiam de uma ferramenta ao vivo cujo caminho gratuito coincide byte a byte com a automação paga no mesmo módulo puro. Falhas de validação nunca consomem saldo após a rejeição. Combine com landings de FNV-1a, Adler-32, CRC ou hash criptográfico só quando a intenção de busca sair do FNV-1 original—mantenha esta página focada em FNV-1 para que a intenção SEO continue nítida e não canibalize landings de checksum ou digest relacionados.
Casos de uso
Sementes para tabelas hash e filtros bloom
Gere chaves hex estáveis FNV-1-32 ou FNV-1-64 para strings curtas usadas como buckets de mapa, filtros bloom ou sementes de feature flag entre linguagens.
Demos de sala de aula do FNV multiplicar-depois-xor
Professores mostram o valor clássico de verificação de foobar e deixam os alunos recalcular outras strings curtas sem instalar uma biblioteca criptográfica.
Perguntas frequentes
Qual é a diferença entre FNV-1 e FNV-1a?
FNV-1 multiplica primeiro pelo primo FNV e depois aplica xor do byte. FNV-1a faz xor primeiro e multiplica depois. Esta ferramenta implementa apenas FNV-1; os resumos não coincidirão com as tabelas de FNV-1a.
O que acontece se o texto estiver vazio?
Uma string não vazia é obrigatória; a entrada vazia não é tratada como um hash bem-sucedido só da base de deslocamento.
A calculadora de hash FNV-1 é gratuita?
A ferramenta do navegador roda grátis no seu dispositivo.
FNV-1 é um hash criptográfico?
Não. FNV-1 é um hash não criptográfico rápido para tabelas hash e chaves de conteúdo. Use SHA-256 ou similar quando precisar de resistência a colisões ou autenticação.
Devo usar FNV-1 de 32 ou de 64 bits?
Use a largura que o outro sistema espera, porque as duas nunca coincidem. A de 32 bits é a padrão e dá oito dígitos hexadecimais, como 31f0b262 para foobar; a de 64 bits tem valor inicial e primo próprios e dá dezesseis.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/fnv1 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"foobar"}'const res = await fetch("https://api.kit.forhosting.com/enc/fnv1", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "foobar"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/fnv1",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "foobar"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/fnv1", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"foobar"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"foobar"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/fnv1", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "foobar"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.fnv1",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A entrada vazia é rejeitada com invalid_input para que ninguém confunda um campo ausente com o valor conhecido da mensagem vazia igual à base de deslocamento.
Contrato de entrada, erros de string vazia e formato da resposta JSON
A string é codificada como UTF-8 antes do laço FNV, de modo que caracteres multibyte contribuem com cada byte da unidade de código exatamente como um runtime de linguagem faria ao hashear o mesmo fluxo UTF-8. A entrada vazia é rejeitada de propósito em vez de devolver só a base de deslocamento, para que a UX do produto e autoavaliadores distinga respostas ausentes de um hash real. Fixe tanto um caminho de sucesso quanto um erro de entrada vazia na integração contínua para que mudanças acidentais de primo, base ou ordem multiplicar-xor não sejam publicadas sem aviso. Campos nulos opcionais são omitidos em vez de emitidos como null, conforme o contrato do renderizador declarativo para formulários web limpos. Envie um corpo JSON com um campo de string obrigatório chamado text: qualquer sequência não vazia de caracteres que você deseje hashear. Os aliases input, value, s, data, message e payload são aceitos para o mesmo campo, para que stubs de SDK e envios de formulário permaneçam flexíveis. O campo opcional bits escolhe a largura: inteiro trinta e dois (padrão) ou sessenta e quatro; os aliases width, bit_width e size são aceitos. Se faltar text, o valor não for string ou a string estiver vazia, a solicitação falha com invalid_input e uma mensagem clara de que uma string não vazia é obrigatória; essas falhas não são cobradas na API pré-paga. Um valor de bits que não seja trinta e dois nem sessenta e quatro também falha com invalid_input. Em caso de sucesso o corpo inclui result, fnv1 e hex com o mesmo resumo hexadecimal em minúsculas; bits com a largura usada; algorithm fixo em FNV-1-32 ou FNV-1-64; input_bytes igual ao comprimento UTF-8; text ecoando a entrada; e message resumindo a contagem de bytes e o resultado hex.
Onde uma API de hash FNV-1 agrega valor e como funciona o preço
Use a ferramenta gratuita no navegador para checagens pontuais; chame a API pré-paga do KIT a partir de backends, funções serverless e SDKs quando precisar de um contrato estável sob saldo a US$ 0,002 por item bem-sucedido. Mantenha payloads em tamanhos de texto ordinários adequados a uma chamada de item em um isolate de Worker; esta ferramenta é para strings curtas e trechos de protocolo, não para blobs binários de vários megabytes.
Casos de integração
Fixtures de CI para helpers de hash não criptográfico
Pipelines fixam saídas hex FNV-1 determinísticas e o erro de entrada vazia para que mudanças acidentais de primo, base ou ordem falhem rápido.
Perguntas técnicas
Como calcular um hash FNV-1 de um texto?
Envie JSON com um campo de string não vazio text e, opcionalmente, bits em 32 (padrão) ou 64. A API codifica a string em UTF-8, executa FNV-1 (multiplicar-depois-xor) e devolve o hash em hex minúsculo em result, fnv1 e hex.