Visualizzatore di stringhe Hash
Inserisci del testo per calcolare e confrontare visivamente gli hash MD5, SHA-1, SHA-256 e SHA-512 con blocchi di colore.
Come funziona
- Inserisci il tuo testo: digita o incolla qualsiasi stringa, password, contenuto di file, identificatore o qualunque testo da hashare.
- Scegli un algoritmo: seleziona MD5, SHA-1, SHA-256, SHA-384 o SHA-512 secondo le tue esigenze.
- Copia l'hash: il valore dell'hash appare all'istante. Copialo per la conservazione, il confronto o la verifica.
Perché usare il generatore di hash di stringa?
L'hashing trasforma una stringa qualsiasi in un'impronta di lunghezza fissa, propria del suo contenuto. Un singolo carattere modificato produce un hash completamente diverso. È essenziale per verificare l'integrità dei dati, conservare password in sicurezza, generare chiavi di cache, deduplicare record e creare identificatori basati sul contenuto. Poiché l'hashing è a senso unico, è impossibile risalire al testo originale a partire dall'hash, il che lo rende sicuro per archiviare dati sensibili.
Funzionalità
- Più algoritmi: MD5, SHA-1, SHA-256, SHA-384 e SHA-512, tutti in un unico strumento.
- Hashing in tempo reale: l'hash si aggiorna all'istante durante la digitazione, senza clic su un pulsante.
- Sensibile al maiuscolo/minuscolo: «Hello» e «hello» producono hash diversi, per progettazione.
- Copia negli appunti: copia dell'hash con un clic.
- 100 % nel browser: le stringhe non lasciano mai il tuo dispositivo, sicuro per i contenuti sensibili.
Domande frequenti
Quale algoritmo di hash scegliere?
Per usi sensibili (password, firme), usa SHA-256 o SHA-512. MD5 e SHA-1 sono deprecati per la sicurezza ma restano utili per i checksum e le chiavi di cache dove la robustezza crittografica non è richiesta.
Posso usare questo strumento per hashare password da archiviare?
L'hashing di stringa ti dà un hash a senso unico, ma per archiviare password, bisogna usare una funzione di derivazione di chiave come bcrypt, Argon2 o PBKDF2 che integra sale e iterazioni. I semplici hash SHA sono troppo veloci e vulnerabili agli attacchi con tabelle arcobaleno.
Gli hash sono reversibili?
No. Le funzioni di hashing sono a senso unico, è impossibile risalire alla stringa originale a partire dal suo hash. Se due stringhe producono lo stesso hash (collisione), è un difetto dell'algoritmo. SHA-256 e SHA-512 non hanno collisioni pratiche conosciute.
Una storia di 35 anni di funzioni hash: da MD5 a BLAKE3
Le funzioni hash crittografiche si sono evolute attraverso una lunga sequenza di cicli rompi-e-sostituisci. MD5 è stato pubblicato da Ronald Rivest in RFC 1321 (aprile 1992) come successore di MD4. Il suo output di 128 bit è stato considerato sufficientemente forte per oltre un decennio fino a quando Wang e Yu hanno pubblicato la prima collisione pratica nel 2004. Nel 2008, i ricercatori avevano utilizzato le collisioni MD5 per falsificare un'autorità di certificazione SSL fraudolenta. SHA-1 è stato progettato dalla NSA e standardizzato dal NIST in FIPS 180-1 (1995). Il suo output di 160 bit è rimasto fino al febbraio 2017, quando Google e CWI Amsterdam hanno annunciato l'attacco SHAttered, producendo due PDF con lo stesso hash SHA-1. Costi: circa 6.500 anni-CPU equivalenti su GPU. SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), anch'esso dalla NSA, è stato pubblicato in FIPS 180-2 (agosto 2002). Utilizza la stessa costruzione Merkle-Damgård di SHA-1 ma con stati più grandi e più round; oggi non esiste alcun attacco pratico alle versioni complete. SHA-3 (Keccak, di Bertoni et al.) è stato selezionato dal NIST dopo una competizione pubblica e standardizzato in FIPS 202 (agosto 2015). SHA-3 utilizza una costruzione spugna completamente diversa, immune agli attacchi di estensione della lunghezza che colpiscono SHA-2. Al di fuori della famiglia NIST, BLAKE2 (Aumasson et al., 2012) e BLAKE3 (2020) offrono sicurezza di classe SHA-3 con la velocità di MD5; BLAKE3 esegue l'hashing di un file da 1 GB in circa un secondo su un laptop moderno.
Quale algoritmo scegliere: una rapida tabella decisionale
- MD5 (128 bit). Rotto dal 2004. Accettabile per usi non di sicurezza: cache busting, deduplicazione di file dove controlli entrambi i lati, checksum contro la corruzione accidentale. Mai usare per password, firme o qualsiasi contesto avversariale.
- SHA-1 (160 bit). Rotto dal 2017 (SHAttered). Git lo usa ancora per gli hash di commit, ma a marzo 2017 Git ha iniziato a incorporare il rilevamento di collisioni (SHA-1DC) per rifiutare i pattern di attacco noti. Evita SHA-1 per nuovo codice.
- SHA-256 (256 bit). Il cavallo di battaglia attuale. Utilizzato da Bitcoin, certificati TLS, firme di pacchetti Linux, firma JWT (HMAC-SHA256) e la maggior parte delle API moderne. Veloce in hardware (estensioni Intel SHA, estensioni crittografiche ARMv8). Scelta predefinita per l'hashing di uso generale.
- SHA-512 (512 bit). Stessa famiglia, output più grande. Leggermente più veloce di SHA-256 su macchine a 64 bit perché il suo stato interno è 64 bit. Usalo quando hai bisogno di ulteriore resistenza alle collisioni o quando 256 bit sembrano restrittivi (raro).
- SHA-3 / Keccak (224/256/384/512 bit). L'alternativa spugna standardizzata a SHA-2. Resistente agli attacchi di estensione della lunghezza che colpiscono SHA-2 (rilevante quando si costruiscono hash con chiave senza HMAC). Più lento in software rispetto a SHA-256 sulla maggior parte dei CPU ma immune a una classe diversa di attacchi.
- BLAKE2 / BLAKE3. Alternative moderne non-NIST. BLAKE3 è l'hash crittografico più veloce ampiamente disponibile, eseguendo l'hashing approssimativamente alla velocità di memcpy grazie al parallelismo. Utilizzato in
b3sum, IPFS e il protocollo VPN WireGuard. Non ancora incrypto.subtle, ma disponibile tramite librerie.
Dove l'hashing viene effettivamente utilizzato
- Verifica dell'integrità dei file. Le distribuzioni Linux pubblicano somme SHA-256 accanto ai download ISO in modo da poter verificare che il file non sia stato danneggiato in transito o modificato da un attaccante.
sha256sum -c ubuntu.sha256in 10 secondi. - Storage indirizzato al contenuto. Git utilizza SHA-1 (in transizione a SHA-256) per identificare ogni commit, albero e blob. IPFS, immagini Docker (sha256:...) e percorsi store Nix utilizzano tutti l'indirizzamento al contenuto. L'hash È l'identificatore.
- Chiavi di cache. L'hashing di un URL o di una richiesta serializzata ti dà una chiave di lunghezza fissa che si adatta a qualsiasi sistema di archiviazione. Stripe, GitHub, ogni CDN utilizza questo per le ricerche di cache.
- Deduplicazione. I sistemi di backup (Time Machine, Borg, Restic) hashano i blocchi di file e memorizzano solo quelli unici. Due blocchi identici da 4 KB su file diversi mappano a un unico chunk memorizzato.
- HTTP ETags. I server web inviano l'hash di una risposta come header
ETag. I browser lo rispediscono conIf-None-Match; il server restituisce 304 se invariato. Risparmia download ridondanti. - Firme JWT e webhook. I JSON Web Tokens firmano il loro payload con HMAC-SHA256 (HS256 nella spec). Stripe, GitHub, webhook Twilio firmano tutti i loro payload in modo da poter verificare che non siano stati manomessi in transito.
- Blockchain. Bitcoin utilizza doppio SHA-256 per proof-of-work e collegamento di blocchi. Ethereum utilizza Keccak-256 (una variante SHA-3). L'intero concetto di blockchain si basa sulla proprietà che trovare due input con lo stesso hash è computazionalmente infattibile.
Errori di hashing che fanno perdere denaro o rompono le cose
- Usare hash SHA per la memorizzazione delle password. SHA-256 è veloce: una GPU moderna calcola ~10 miliardi di hash SHA-256 al secondo. Con un database trapelato, un attaccante può provare ogni parola di un dizionario più tutte le trasformazioni comuni in pochi minuti. Usa Argon2id (vincitore della Password Hashing Competition 2015), bcrypt o scrypt. Sono deliberatamente lenti ed esigenti in memoria.
- Dimenticare di salare. Anche con un hash lento, la stessa password hashata senza sale produce lo stesso output tra gli utenti, abilitando rainbow table e rilevamento side-channel di password duplicate. Memorizza sempre un sale casuale per utente accanto all'hash.
- Attacchi di estensione della lunghezza su SHA-2.
hash(secret + message)con SHA-256 è vulnerabile: un attaccante che conosce l'hash e la lunghezza disecretpuò aggiungere dati arbitrari e calcolare l'hash risultante senza conosceresecret. Usa HMAC-SHA256 invece. SHA-3 e BLAKE2/3 sono immuni. - Confronto di stringhe in tempo costante. Confrontare hash (o qualsiasi valore segreto) con
==in JavaScript fa trapelare informazioni attraverso il timing: una funzione che esce al primo byte non corrispondente consente agli attaccanti di apprendere l'hash corretto byte per byte su molte richieste. Usacrypto.timingSafeEqualin Node,hmac.compare_digestin Python. - Hashing di stringhe senza specificare la codifica.
sha256("hello")in Python 3 dà errore (hai bisogno di byte); in Node il default è UTF-8; in PHP e Java il default può variare. Codifiche diverse producono hash diversi. Codifica sempre esplicitamente come UTF-8 prima di fare hashing. - Troncare hash per «ID brevi». Un taglio di 64 bit di SHA-256 è comodo per ID brevi ma il paradosso del compleanno significa che le collisioni appaiono a ~2³² elementi (circa 4 miliardi), non 2⁶⁴. Se tronchi, pianifica la gestione delle collisioni alla scala prevista.
- Trattare l'output dell'hash come stringa URL-safe. I byte grezzi dell'hash non sono stampabili. Usa hex (più comune) o base64url. Il base64 standard contiene
+e/che si rompono in URL e nomi di file; base64url è la variante sicura.
Altre domande frequenti
Perché MD5 e SHA-1 sono «rotti» se producono ancora hash?
«Rotto» significa che un attaccante può produrre collisioni più velocemente della forza bruta. Per MD5, trovare due input con lo stesso hash richiede secondi su un laptop oggi. Per SHA-1, ha richiesto 6.500 anni-CPU nel 2017 ed è sceso drammaticamente da allora. Gli hash funzionano ancora meccanicamente; ciò che è rotto è la garanzia di sicurezza che sono «resistenti alle collisioni». Per usi non-avversariali (checksum di un file di cui ti fidi contro la corruzione accidentale) MD5 funziona ancora bene. Per qualsiasi cosa coinvolga un avversario, entrambi sono insicuri.
Dovrei preoccuparmi dei computer quantistici che rompono SHA-256?
Meno di quanto potresti pensare. L'algoritmo di Grover accelera gli attacchi di preimmagine contro un hash a 256 bit da 2²⁵⁶ a 2¹²⁸ lavoro classico-equivalente, che è ancora effettivamente impossibile. Le primitive simmetriche (hash, AES) sopravvivono al calcolo quantistico raddoppiando le dimensioni delle chiavi/output. La crittografia a chiave pubblica (RSA, ECDSA) è ciò che cade duramente agli attacchi quantistici, da cui gli standard post-quantistici NIST pubblicati ad agosto 2024 (ML-KEM, ML-DSA, SLH-DSA). Se stai usando SHA-256 oggi, SHA-512 nell'era post-quantistica sarà più che sufficiente.
Qual è la differenza tra un hash e HMAC?
Un hash (SHA-256) è senza chiave: chiunque abbia l'input può calcolare lo stesso output. Un HMAC (Hash-based Message Authentication Code) avvolge l'hash con una chiave segreta, quindi solo chi conosce la chiave può calcolare o verificare il tag. Definito in RFC 2104 (1997), HMAC è il modo standard per «firmare» simmetricamente un messaggio (mittente e ricevitore condividono un segreto). Usa HMAC-SHA256 per firme webhook, JWT HS256, firma di richiesta API. Semplice SHA-256 su secret + message è insicuro a causa dell'estensione della lunghezza.
Perché librerie diverse danno hash diversi per la stessa stringa?
Tre cause comuni. Primo, codifica caratteri: UTF-8 vs UTF-16 vs Latin-1 danno byte diversi per stringhe non-ASCII, quindi hash diversi. Codifica sempre esplicitamente. Secondo, fine riga: "hello\n" e "hello\r\n" hashano diversamente; i checksum Windows-vs-Unix spesso differiscono per questo motivo. Terzo, formato di output: hex minuscolo vs hex maiuscolo vs base64 sembra un valore diverso ma rappresenta gli stessi byte. Normalizza i formati di input e output prima di confrontare.
Il mio input viene inviato a un server quando faccio hash qui?
No. Tutti e quattro gli hash sono calcolati nel tuo browser usando l'API Web Crypto integrata (crypto.subtle.digest). Apri la scheda Rete in DevTools e digita nell'input, vedrai zero richieste in uscita. Sicuro per credenziali, token o qualsiasi valore privato che vuoi hashare senza che lasci il tuo dispositivo.