Hash FNV-1a
Ottenga l'impronta FNV-1a di qualsiasi testo, mescolando ogni byte prima di moltiplicare: foobar dà bf9cf968 a 32 bit, o sedici cifre esadecimali a 64 bit, un'etichetta stabile per tabelle hash, filtri bloom e chiavi di cache. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- foobar
- Bit
- 32
- Bit
- 32
- Hash
- bf9cf968
- Hash (intero)
- 3.214.735.720
- Byte
- 6
FNV-1a è la forma alternativa dell’hash Fowler–Noll–Vo: un digest non crittografico rapido costruito da una base di offset fissa, un primo scelto con cura e un passo per byte di exclusive-or e poi moltiplicazione, popolare in tabelle hash, filtri di Bloom e campi di impronta compatti. Gli sviluppatori ricorrono a FNV-1a quando servono un’etichetta stabile a trentadue o sessantaquattro bit più economica di un hash crittografico e più sensibile all’ordine di una semplice somma. Questo strumento hash FNV-1a accetta testo semplice, lo serializza come UTF-8 e restituisce una stringa esadecimale in minuscolo—otto cifre per il profilo a trentadue bit o sedici per quello a sessantaquattro—più una forma intera, la lunghezza in byte UTF-8, la larghezza scelta e un indicatore empty quando la stringa di origine ha lunghezza zero.
Cosa significa FNV-1a e come differiscono i profili a 32 e 64 bit
Gli hash Fowler–Noll–Vo piegano un messaggio in un residuo a larghezza fissa partendo da una base di offset documentata e, per ogni byte di ingresso, prima applicano exclusive-or del byte sull’hash corrente e poi moltiplicano per un primo scelto per quella larghezza. La forma alternativa FNV-1a applica l’exclusive-or prima della moltiplicazione; la forma più vecchia FNV-1 moltiplica prima. Questa capacità implementa solo FNV-1a perché quell’ordine è quello che la maggior parte degli ecosistemi di linguaggi e tutorial sulle tabelle hash cita oggi.
Per trentadue bit la base è zero-x-otto-uno-uno-c-nove-d-c-cinque e il primo è zero-x-zero-uno-zero-zero-zero-uno-nove-tre, producendo una stringa hex di otto cifre in minuscolo. Per sessantaquattro bit la base è zero-x-c-b-f-due-nove-c-e-quattro-otto-quattro-due-due-due-tre-due-cinque e il primo è zero-x-uno-zero-zero-zero-zero-zero-zero-zero-uno-b-tre, producendo sedici cifre hex. FNV-1a è pensato per hashing rapido in tabelle e etichette di integrità leggere; non è un hash crittografico e non deve essere usato dove servono resistenza deliberata alle collisioni, archiviazione di password o schemi di firma.
Se uno strumento di terze parti non concorda sugli stessi byte UTF-8, usa quasi sempre FNV-1 invece di FNV-1a, una larghezza diversa, o hash di unità UTF-16 invece di byte UTF-8.
Casi d'uso
Chiavi di tabella hash e etichette di bucket
Calcoli FNV-1a di stringhe brevi quando Le serve un’impronta non crittografica stabile a 32 o 64 bit per bucket di tabella, filtri di Bloom o chiavi di frammento di cache.
Demo in aula e di supporto
Mostri a studenti e operatori come modificare pochi caratteri cambia l’hex FNV-1a senza installare utilità locali o librerie crittografiche.
Domande frequenti
Qual è la differenza tra FNV-1a a 32 e a 64 bit?
Entrambi usano il passo FNV-1a exclusive-or e poi moltiplicazione su ogni byte UTF-8, ma con basi e primi diversi. Trentadue bit restituisce otto cifre hex; sessantaquattro bit ne restituisce sedici. Il predefinito è 32 se bits è omesso.
Cosa succede con input vuoto?
Il testo vuoto è valido. La risposta imposta empty a true, hash alla base di offset della larghezza scelta (811c9dc5 per 32 bit, cbf29ce484222325 per 64 bit) e bytes a 0.
FNV-1a è un hash crittografico?
No. FNV-1a è un hash non crittografico rapido per tabelle e impronte leggere. Non lo usi per password, firme o integrità resistente alle collisioni contro aggressori; usi digest della famiglia SHA in quei casi.
Perché un altro strumento dà un hash FNV-1a diverso?
Con lo stesso testo, l'altro strumento usa quasi sempre FNV-1, che moltiplica prima di mescolare, un'altra larghezza, oppure le unità UTF-16 del testo invece dei suoi byte UTF-8. Questo lavora sui byte UTF-8 nell'ordine di FNV-1a.
Come si calcola un hash FNV-1a?
Si parte da una base fissa, 0x811c9dc5 a 32 bit. Per ogni byte del testo, prima il byte viene mescolato al valore corrente con un o esclusivo, poi il valore viene moltiplicato per il numero primo 0x01000193 e ridotto a 32 bit.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/enc/fnv1a \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"foobar"}'const res = await fetch("https://api.kit.forhosting.com/enc/fnv1a", {
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/fnv1a",
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/fnv1a", 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/fnv1a", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "foobar"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.fnv1a",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Nessuna chiamata di rete, sale casuale o orologio di parete entra nel calcolo: ogni percorso riuscito è aritmetica pura al prezzo base pubblicato $0.002.
Cosa significa FNV-1a e come differiscono i profili a 32 e 64 bit
L’input vuoto lascia il residuo uguale alla base di offset stessa, che questo endpoint segnala con empty a true così i client distinguono un bianco deliberato da un campo mancante.
Contratto di input, campi di risposta e comportamento con input vuoto
La stringa vuota è consentita di proposito: l’identità matematica di FNV-1a su zero byte è la base di offset, e le pipeline che improntano campi opzionali necessitano di un residuo stabile invece di un fallimento duro. Quando la lunghezza di origine è zero la risposta imposta empty a true, hash all’hex della base per la larghezza scelta e bytes a zero. Non c’è un selettore di modalità per FNV-1, MD5, SHA o CRC: se Le servono quei digest, usi una capacità dedicata così ogni pagina corrisponde a una sola intenzione di ricerca e slug SEO. Invii un corpo JSON con il campo obbligatorio text impostato sulla stringa che desidera hashare. Gli alias input, value, s, string e content sono accettati così form antichi e client brevi si collegano ancora. Il bits opzionale seleziona la larghezza: trentadue (predefinito) o sessantaquattro; sono accettati gli alias width e bit_width, e funzionano sia forme numeriche sia stringa. Numeri finiti e interi grandi vengono convertiti in stringa prima dell’hash; oggetti, array, booleani, null, Infinity e NaN generano invalid_input e non vengono fatturati. Per input non vuoto empty è false, bytes uguaglia la lunghezza UTF-8, hash è il digest hex minuscolo senza prefisso zero-x, e hash_int porta lo stesso valore come intero senza segno per trentadue bit o come stringa decimale per sessantaquattro bit, così l’intervallo senza segno completo resta esatto in JSON. Algorithm è sempre l’etichetta FNV-1a; offset_basis e prime ripetono le stringhe di parametri della larghezza selezionata così esempi OpenAPI e risposte di supporto citano il profilo senza ambiguità.
Dove un’API hash FNV-1a porta valore
Gli sviluppatori incollano chiavi brevi, frammenti di configurazione e identificatori di cache in una calcolatrice hash FNV-1a quando serve un indice di bucket compatto a trentadue o sessantaquattro bit che corrisponda a un runtime di linguaggio o a una nota di protocollo legacy. Gli ingegneri di supporto ricalcolano i digest dal testo del ticket per confermare che un dump incollato non sia stato troncato o ricodificato in transito. I laboratori didattici usano lo stesso endpoint per mostrare che cambiare un solo carattere inverte molte cifre hex, illustrando il comportamento a valanga senza introdurre macchinari crittografici. Poiché l’implementazione è parse pura di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello né rete in uscita; la validazione fallita non consuma saldo. Mantenga i payload sotto il tetto di caratteri documentato, tratti il campo hex come destinazione canonica di incolla, e otterrà valori FNV-1a riproducibili per documentazione, SDK, worker all’edge e demo in aula senza erigere un servizio di hashing separato.
Casi di integrazione
Vettori golden di CI e fixture di input vuoto
Fissi foobar → bf9cf968 (32 bit) e vuoto → base di offset così l’integrazione continua intercetta subito FNV-1 vs FNV-1a o derive di codifica UTF-8.
Domande tecniche
Come si calcola un hash FNV-1a del testo?
Invii JSON con text impostato sulla Sua stringa e bits opzionale a 32 o 64 (predefinito 32). Il campo hash restituisce hex minuscolo del digest FNV-1a sui byte UTF-8; hash_int è lo stesso valore come intero senza segno (numero per 32 bit, stringa decimale per 64 bit).
Quanto costa la calcolatrice hash FNV-1a?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l’input non valido non viene fatturato.