Generatore di hash

Calcoli le impronte MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, Keccak-256, RIPEMD-160, BLAKE2b o BLAKE2s di qualsiasi testo o file — utile per checksum, controlli di integrità e chiavi di cache. Incolli un digest atteso per verificarlo rispetto al suo input, oppure incolli una stringa di hash sconosciuta per capire da quale algoritmo probabilmente proviene. SHA-1/256/384/512 provengono da WebCrypto nativo del browser; gli altri sono implementazioni autonome in JavaScript puro, quindi tutto viene eseguito localmente. Veda anche il Generatore di numeri casuali per sequenze casuali con seme.
Viene eseguito interamente in locale — nulla viene caricato. Input fino a 200 MB.
Input: Algoritmi:
Formato di output: SHA-1 è legacy — preferisca SHA-256/512 se non ne ha bisogno specifico.
Le righe delle impronte hanno la forma «ALGORITMO  hash» così può copiarle nelle note di rilascio o nei manifest di download.
Incolli l'impronta fornita da una pagina di download o da un manifest. Lo strumento tollera maiuscole/minuscole, spazi, due punti, prefissi in stile sha256=, involucri in stile MD5 (file.exe) = e output multi-riga di md5sum, quindi lo confronta con gli algoritmi selezionati sopra.
Incolli una stringa di hash sconosciuta. Lo strumento ne legge lunghezza, insieme di caratteri e prefissi, ed elenca gli algoritmi che potrebbero averla prodotta — da una semplice impronta esadecimale fino agli hash di password in stile PHC come $2b$… o $argon2id$….
Scegliere un algoritmo:
SHA-256 è il default sensato per i controlli di integrità oggi. SHA-512 è più robusto e più veloce su hardware a 64 bit, al prezzo di un output più lungo; SHA-384 è l'opzione intermedia quando serve un digest SHA-2 a lunghezza ridotta. SHA-3 è uno standard NIST progettato in modo indipendente (non un aggiornamento di SHA-2) ed è la risposta standard quando si vuole un algoritmo senza una discendenza in comune con SHA-2; Keccak-256 è la variante precedente allo standard usata da Ethereum e da alcuni altri sistemi, e differisce da SHA3-256 per un solo byte di padding. BLAKE2b/BLAKE2s sono hash moderni e veloci progettati per il software; RIPEMD-160 è un disegno più vecchio ancora usato in contesti Bitcoin e OpenPGP. SHA-1 e MD5 sono crittograficamente compromessi per input ostili, ma restano corretti e molto usati per deduplicazione, sistemi legacy e checksum non avversariali — non li usi mai dove un attaccante potrebbe scegliere il contenuto. Nessun hash oggi è «resistente al quantistico» nel senso in cui i computer quantistici minacciano prima le firme e lo scambio di chiavi — l'algoritmo di Grover dimezza soltanto la lunghezza effettiva dell'hash, quindi SHA-256 resta comodamente al di sopra del limite pratico. Gli hash sono deterministici: gli stessi byte producono sempre lo stesso digest, ed è esattamente ciò che li rende utili per verificare che un download o un file di configurazione sia integro.
Cerca l'hash nazionale cinese?
SM3 (GB/T 32905-2016), il digest previsto dalla crittografia commerciale cinese, non fa parte di questa pagina — ha un proprio strumento con supporto HMAC-SM3 nella pagina Generatore di hash SM3, insieme al resto della suite SM: SM4 (cifrario a blocchi), SM2 (firme e cifratura) e SM9 (crittografia basata sull'identità).
Generatore di hash — ogni algoritmo spiegato da zero
In una frase: una funzione di hash crittografica è un frullatore a senso unico — prende un numero qualsiasi di byte e li comprime in un'impronta di lunghezza fissa, in modo che lo stesso input dia sempre la stessa impronta, ma l'impronta non dice nulla su come ricostruire l'input. Questa pagina ne esegue undici interamente nella scheda del browser.

Ogni algoritmo qui sotto è spiegato con gli stessi quattro passaggi: che cos'è in parole semplici, l'intuizione di come funziona senza formule, se va ancora usato oggi, e gli errori che le persone commettono più spesso.

MD5

Che cos'è. MD5 (1992) comprime qualsiasi input in un'impronta a 128 bit (32 caratteri esadecimali). È stato progettato per essere veloce sui computer degli anni '90, e lo è ancora — ed è proprio per questo che è ancora ovunque: pagine di download di software, cache di deduplicazione dei file, chiavi di database legacy.

Come funziona, intuitivamente. L'input viene tagliato in blocchi da 64 byte. Ogni blocco viene mescolato in uno stato rotante a 128 bit quattro volte di seguito (quattro turni di mescolamento leggermente diversi), e dopo l'ultimo blocco lo stato viene stampato come digest. Il mescolamento è costruito con addizioni, rotazioni e ricerche in tabella — economico allora, economico oggi.

Va usato? Per checksum in cui nessuno sta cercando di imbrogliarla — rilevare un download corrotto, trovare file duplicati — sì, segnala ancora perfettamente la corruzione. Per tutto ciò che è avversariale, no: dal 2004 i ricercatori possono costruire in pochi secondi due file diversi con lo stesso MD5, e nel 2008 ci sono state contraffazioni reali di certificati che usavano collisioni MD5. Lo tratti come un numero di serie, non come una serratura.

Errori comuni. Usare MD5 per le password (troppo veloce — veda il Generatore di hash per password per ciò che va usato invece); fidarsi di un file perché «l'MD5 coincide» quando l'attaccante ha pubblicato anche l'MD5; e incollare l'intera riga MD5 (file) = hash invece del solo hash — il riquadro di verifica qui sopra accetta entrambi.

SHA-1

Che cos'è. SHA-1 (1995, NSA) produce un digest a 160 bit (40 caratteri esadecimali). Per vent'anni è stato l'hash di integrità predefinito di Git, dei certificati TLS e delle firme PGP.

Come funziona, intuitivamente. La stessa ricetta della famiglia di MD5 ma con uno stato a 160 bit, 80 turni di mescolamento per blocco da 64 byte e un insieme più ampio di operazioni. I turni extra servivano a rendere il frullatore più difficile da decifrare per ingegneria inversa.

Va usato? No, per tutto ciò che è avversariale. La rottura teorica è diventata pratica nel 2017, quando Google ha prodotto due PDF diversi con gli stessi valori SHA-1 (l'attacco SHAttered, a circa 6500 anni-CPU). Git memorizza ancora gli oggetti sotto SHA-1, ma lo considera solo un identificatore, e da allora ha aggiunto il rilevamento delle collisioni. Per il nuovo lavoro usi SHA-256 o SHA-3.

Errori comuni. Credere che 160 bit «siano ancora abbastanza lunghi» — la rottura riguarda la struttura interna, non la forza bruta; e confondere RIPEMD-160 con SHA-1 perché entrambi sono lunghi 40 caratteri esadecimali (il riquadro di identificazione qui sopra li distingue).

SHA-2: SHA-256, SHA-384 e SHA-512

Che cos'è. La famiglia SHA-2 (2001, NSA) è il cavallo di battaglia del controllo di integrità moderno. SHA-256 dà 256 bit (64 caratteri esadecimali), SHA-512 dà 512 bit, e SHA-384 è SHA-512 con il risultato troncato a 384 bit — utile quando un protocollo impone un tag più corto.

Come funziona, intuitivamente. I blocchi da 64 byte (o da 128 byte per le varianti a 512 bit) vengono piegati in uno stato di 8 parole tramite 64 (o 80) turni di passaggi di addizione, rotazione e mescolamento. A differenza di MD5, la pianificazione allunga prima ogni blocco in un buffer espanso, ed è ciò che ha sconfitto il tipo di attacco che aveva rotto MD5 e SHA-1. Una curiosità utile da sapere: sulle CPU a 64 bit SHA-512 è più veloce di SHA-256, perché elabora il doppio dei dati per turno con aritmetica a 64 bit.

Va usato? Sì — SHA-256 è la risposta predefinita oggi per i checksum dei file, la firma del codice e le impronte dei certificati, senza alcuna rottura pratica nota dopo due decenni di analisi. Usi SHA-384/512 quando vuole un margine maggiore o quando la piattaforma li esegue più velocemente.

Errori comuni. Usare SHA-256 da solo per le password — è un hash veloce, e la velocità è il nemico in quel caso (usi bcrypt/scrypt/Argon2id); e confondere la lunghezza del digest con la robustezza per la resistenza alle collisioni in contesti avversariali — la lunghezza stabilisce solo il tetto.

SHA-3 (SHA3-256 / SHA3-512) e Keccak-256

Che cos'è. SHA-3 (2015, standardizzato dalla proposta Keccak di Bertoni, Daemen, Peeters e Van Assche) è il terzo standard di hash del NIST. Non condivide nulla con gli interni di SHA-2 — è stato scelto proprio per essere un backup indipendente nel caso in cui SHA-2 dovesse cadere.

Come funziona, intuitivamente. Invece di mescolare blocchi in un piccolo stato, Keccak «assorbe e rilascia» ripetutamente: l'input viene assorbito bit per bit in una spugna a 5×5×64 bit, l'intera spugna viene rimescolata da una permutazione fissa (24 turni di operazioni bit a bit sull'intero stato), poi i bit del digest vengono spremuti fuori. L'immagine della spugna è l'intera idea: i bit di capacità non vengono mai emessi, e sono ciò che rende la funzione a senso unico.

Keccak-256 contro SHA3-256. Differiscono per esattamente un byte di padding. La proposta originale del team Keccak completava l'ultimo blocco con 0x01; il NIST ha cambiato il padding standard in 0x06 (separazione di dominio usata con Keccak dell'epoca SHA-2). Ethereum ha adottato il padding originale, quindi il suo «keccak256» differisce dallo SHA3-256 standard per ogni input. Questa pagina offre entrambi, selezionabili separatamente.

Va usato? Sì — come scelta principale quando la policy richiede un algoritmo non SHA-2, oppure ovunque l'ecosistema già lo usi. Errori comuni: presumere che SHA3-256 e Keccak-256 siano intercambiabili (non lo sono — confronti le due righe che questa pagina produce per lo stesso input); e presumere che «SHA-3» sostituisca SHA-2 — entrambi sono sicuri, SHA-2 resta quello più diffuso.

RIPEMD-160

Che cos'è. RIPEMD-160 (1996, il consorzio europeo RIPE di accademici, rafforzato da Dobbertin, Bosselaers e Preneel) produce 160 bit. È un disegno interamente europeo, deliberatamente indipendente dalla famiglia SHA progettata dalla NSA.

Come funziona, intuitivamente. Ogni blocco da 64 byte viene elaborato da due linee parallele di 80 turni con costanti e quantità di rotazione diverse; alla fine le due linee e lo stato precedente vengono combinati. La struttura a due binari era il modo dei progettisti per resistere agli attacchi differenziali che stavano rompendo altri hash degli anni '90.

Va usato? In pratica sopravvive soprattutto dentro altri sistemi: gli indirizzi Bitcoin fanno l'hash delle loro chiavi pubbliche con RIPEMD-160(SHA-256(pk)), le vecchie chiavi OpenPGP lo offrono come opzione di hash, ed è l'hash tradizionale dei pezzi BitTorrent v1 accanto a SHA-1. Non ha un attacco di collisione pratico, ma la dimensione di 160 bit gli dà il margine di sicurezza più piccolo di questa pagina. Per un uso autonomo nuovo preferisca SHA-256 o SHA-3.

Errori comuni. Credere che le due linee parallele lo rendano «due volte più forte» — la dimensione dell'output è ciò che limita la resistenza alle collisioni; e confonderlo con SHA-1 (stessa lunghezza di 40 caratteri esadecimali; il riquadro di identificazione elenca entrambe le possibilità una accanto all'altra).

BLAKE2b-512 e BLAKE2s-256

Che cos'è. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn e Winnerlein) è un hash progettato per la velocità del software: BLAKE2b è destinato a piattaforme a 64 bit con output fino a 512 bit, BLAKE2s a piattaforme a 32 bit con output fino a 256 bit.

Come funziona, intuitivamente. Discende dal finalista SHA-3 BLAKE, il cui nucleo è una permutazione con chiave presa in prestito dal cifrario a flusso ChaCha: una matrice 4×4 di parole viene rimescolata alternando passaggi di mescolamento per colonne e per diagonali — come mescolare una griglia prima dall'alto verso il basso, poi lungo le diagonali — per 12 (BLAKE2b) o 10 (BLAKE2s) turni per blocco. Poiché quei passaggi si mappano molto bene sulle istruzioni della CPU, BLAKE2 è spesso più veloce di MD5 pur offrendo una sicurezza paragonabile a SHA-3.

Va usato? Sì — è un disegno moderno e non rotto, popolare nel software sensibile alle prestazioni (integrità dei pacchetti in alcuni ecosistemi, storage indirizzato per contenuto, deduplicazione dei backup) e come MAC veloce. In questa pagina, BLAKE2b-512 dà i digest più lunghi e BLAKE2s-256 l'opzione moderna compatta.

Errori comuni. Pensare che «più veloce significhi più debole» — BLAKE2 è più veloce per progetto, non perché taglia gli angoli; e non rendersi conto che BLAKE2 accetta anche una chiave (diventando un MAC) o una stringa di personalizzazione — questa pagina lo usa sempre in modalità semplice senza chiave.

Leggere i riquadri di Verifica e Identificazione

Verifica. Il riquadro di verifica normalizza qualsiasi cosa incolli — maiuscole o minuscole, due punti ogni due cifre, un prefisso sha256=, l'involucro in stile BSD SHA256 (file) = hash, una riga GNU md5sum con il nome del file dopo l'hash, eventuali \r\n residui — poi ricalcola ogni algoritmo selezionato sul suo input attuale (testo o il file scelto) e segnala ogni algoritmo che corrisponde. Una corrispondenza verde significa «questi byte sono esattamente ciò che l'editore ha sottoposto ad hash»; il rosso significa che nessuno degli algoritmi selezionati lo ha prodotto — provi a selezionarne altri, oppure controlli se l'incolla è stata troncata.

Identifica. Il riquadro di identificazione non calcola alcun hash; legge la forma della stringa. La lunghezza restringe i candidati: 32 caratteri esadecimali potrebbero essere MD5, 40 potrebbero essere SHA-1 o RIPEMD-160, 64 potrebbero essere SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. I prefissi rivelano gli hash di password ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — sono una specie diversa (veda il Generatore di hash per password) e questa pagina non li calcola di proposito. Una stringa con +, / e = la cui lunghezza è multipla di 4 è più probabilmente dati codificati in Base64 che un digest esadecimale; lo strumento la decodifica e riporta la lunghezza in byte che corrisponderebbe.

Che cosa può dirle l'identificazione e che cosa no. La lunghezza e l'insieme di caratteri sono impronte del formato, non una prova dell'algoritmo: due stringhe di 64 caratteri esadecimali possono provenire da SHA-256 oppure da SHA-512 troncato. L'identificatore ordina le possibilità; il riquadro di verifica è quello che dimostra a quale algoritmo corrispondono davvero i suoi byte.

Tutti e undici in un colpo d'occhio
Algoritmo Digest Introdotto Digest di «The quick brown fox jumps over the lazy dog»
MD5128 bit19929e107d9d372bb6826bd81d3542a419d6
SHA-1160 bit19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256 bit2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384 bit2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512 bit200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256 bit201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512 bit201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256 bitprima del 20154d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160 bit199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512 bit2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256 bit2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

Ogni digest nella tabella sopra è prodotto dai motori di questa stessa pagina — selezioni tutti gli algoritmi, prema Esempio e confronti. Le righe di SHA-3, Keccak, RIPEMD-160 e BLAKE2 provengono dal kernel crypto-shared.js ospitato in proprio, usato da tutti gli strumenti crittografici di questo sito.

Domande frequenti

Quale riquadro devo considerare affidabile per un download? Il riquadro di verifica, con SHA-256 selezionato — la maggior parte degli editori oggi firma con SHA-256 o SHA-512. Il riquadro di identificazione si limita a nominare candidati; non dimostra mai nulla sul suo file.

Perché Keccak-256 è nell'elenco? Perché Ethereum, Swarm e alcuni sistemi di registro hanno standardizzato il padding precedente allo standard. Se verifica un keccak256 di Ethereum deve usare quella riga, non SHA3-256.

Due input diversi possono condividere un digest? In teoria sì — infiniti input si mappano in un insieme finito di digest (principio dei cassetti). In pratica, trovare una coppia del genere prima della fine dell'universo è ciò di cui tratta la «resistenza alle collisioni», e ogni algoritmo qui sopra tranne MD5 e SHA-1 regge ancora.

Gli hash sono cifratura? No. La cifratura è reversibile con una chiave; un hash è un frullatore a senso unico. Nulla di questa pagina può essere «decifrato» tornando al suo testo — ed è una caratteristica, non un limite.