Informazioni sul generatore di hash
Questo generatore di hash gratuito calcola gli hash MD5, SHA-1, SHA-256, SHA-384 e SHA-512 di qualsiasi testo, tutti insieme e in tempo reale mentre lei scrive.
Gli hash vengono calcolati nel suo browser tramite la Web Crypto API — il suo testo non viene mai caricato.
Che cos'è un hash
Una funzione di hash prende un input di qualsiasi lunghezza e produce un'impronta di lunghezza fissa. Le dia un solo carattere o un libro intero: SHA-256 restituisce 64 caratteri esadecimali in entrambi i casi.
Tre proprietà la rendono utile:
Deterministica. Lo stesso input dà sempre lo stesso hash. Sempre, su qualsiasi macchina, per sempre.
Effetto valanga. Cambi un solo bit dell'input e circa metà dei bit in uscita si ribalta. hello e hellp producono hash senza alcuna somiglianza visibile. Non esiste un «quasi» — un hash o corrisponde esattamente oppure non le dice nulla.
A senso unico. Non si può risalire dall'hash all'input. La funzione scarta informazione di proposito e non esiste alcuna inversa.
Quest'ultima proprietà è il punto centrale ed è il motivo per cui un hash non è cifratura.
L'hashing non è cifratura
La cifratura è a doppio senso: con la chiave si riottiene l'originale. È questo il suo scopo.
L'hashing è a senso unico per costruzione. Non c'è chiave e non c'è ritorno. Un documento di 500 pagine e una singola lettera diventano entrambi 64 caratteri — gran parte dell'informazione è semplicemente sparita.
Quindi la domanda a cui un hash risponde non è mai «che cosa era questo?» ma «questo è uguale a quello?». Confronti due hash: identici significa che gli input erano identici; diversi significa che non lo erano.
Da qui nasce un equivoco diffuso. «Decifrare» un hash MD5 non esiste. Quello che fanno davvero i siti di ricerca è calcolare in anticipo l'hash di miliardi di input comuni e controllare se il suo compare nella tabella. Non stanno invertendo la funzione; stanno riconoscendo un valore già visto. Tutto ciò che è insolito non è nella tabella.
MD5 e SHA-1 sono compromessi — ecco che cosa significa
Entrambi compaiono ancora ovunque, ed entrambi non sono sicuri per scopi di sicurezza. Vale la pena sapere esattamente in che senso.
Una collisione sono due input diversi che producono lo stesso hash. Dovrebbe essere irrealizzabile. Per MD5 oggi è banale — si producono collisioni in pochi secondi su un computer qualsiasi. SHA-1 è caduto nel 2017, quando Google ha dimostrato due PDF diversi con lo stesso hash SHA-1, e da allora l'attacco è solo diventato più economico.
Perché è importante: se qualcuno può costruire due file con hash coincidenti, un hash non prova più che un file sia quello atteso. Un documento firmato potrebbe essere sostituito con un altro documento avente la stessa impronta.
Dove MD5 va ancora bene: per rilevare danneggiamenti accidentali. Se vuole sapere se un download è arrivato integro, o se due file sul suo disco sono duplicati, MD5 funziona ed è veloce. Un danneggiamento casuale non produrrà una collisione.
Dove non va bene: ovunque qualcuno possa cercare di ingannarla — verificare l'autenticità di un download, firmare o memorizzare password.
Usi SHA-256 per tutto ciò che conta. Non ha attacchi di collisione pratici noti, è veloce ed è l'impostazione predefinita nei sistemi moderni. SHA-512 non è sensibilmente più sicuro per la maggior parte degli scopi, anche se può essere più veloce su hardware a 64 bit.
Non memorizzi mai le password con un semplice hash
Questo è l'abuso più grave delle funzioni di hash e provoca violazioni reali.
Calcolare l'hash SHA-256 di una password e memorizzare il risultato non basta. Il problema sono gli hash veloci: SHA-256 è progettato per essere rapido, e l'hardware moderno ne calcola miliardi al secondo. Un attaccante che le rubi il database prova semplicemente ogni password probabile finché gli hash non coincidono.
Due ulteriori problemi peggiorano la situazione. Password identiche producono hash identici, quindi un attaccante vede subito quali account condividono una password. E le tabelle precalcolate fanno sì che le password comuni vengano riconosciute senza alcuno sforzo.
L'approccio corretto usa una funzione di hashing per password costruita per essere lenta e avida di memoria: bcrypt, scrypt o Argon2. Aggiungono un salt casuale unico per ogni password, così password identiche danno hash diversi, e sono deliberatamente costose — regolate perché un singolo controllo richieda una frazione di secondo percepibile, rendendo impraticabili miliardi di tentativi.
Usi una libreria adeguata. La memorizzazione delle password non è qualcosa da costruire a partire dalle primitive di hash.
A cosa servono davvero gli hash
- Verificare i download — confrontare il checksum pubblicato con il file ricevuto
- Individuare file duplicati — hash identici significano contenuti identici
- Rilevare modifiche — questo file, record o configurazione è stato cambiato?
- Indirizzamento per contenuto — Git dà a ogni commit e a ogni oggetto il nome del suo hash
- Integrità dei dati — confermare che un trasferimento o un backup è arrivato integro
- Chiavi di cache — un identificatore breve e stabile derivato da un contenuto più lungo
- Firme digitali — si calcola l'hash del documento e poi si firma l'hash
Come usarlo
- Scriva o incolli il suo testo
- Gli hash si aggiornano in tempo reale per ogni algoritmo
- Copi qualsiasi hash con il suo pulsante di copia
Buono a sapersi
- La lunghezza dell'output è fissa. MD5 dà 32 caratteri esadecimali, SHA-1 ne dà 40, SHA-256 ne dà 64, SHA-512 ne dà 128 — indipendentemente dalla dimensione dell'input.
- Conta tutto. Uno spazio finale, un a capo alla fine di un file o un diverso fine riga cambiano completamente l'hash. È il motivo consueto per cui un checksum «dovrebbe» corrispondere e non corrisponde.
- La codifica conta. Questo strumento calcola l'hash del suo testo come UTF-8. Calcolare l'hash degli stessi caratteri in un'altra codifica dà un risultato diverso.
- Le maiuscole sono convenzione, non significato. Gli hash sono spesso mostrati in maiuscolo o in minuscolo; il valore è lo stesso. Li confronti ignorando le maiuscole.
- Anche un input vuoto ha un hash — una costante ben nota per ciascun algoritmo.
- Per i file di grandi dimensioni è meglio usare gli strumenti del suo sistema operativo: certutil -hashfile su Windows, shasum -a 256 su macOS e Linux.
Domande frequenti
Qual è la differenza tra hashing e cifratura?
La cifratura è reversibile — con la chiave giusta si recuperano i dati originali, ed è tutto il suo scopo. L'hashing è a senso unico per costruzione: produce un'impronta di lunghezza fissa e non c'è modo di tornare indietro, perché gran parte dell'informazione viene scartata di proposito. L'hashing risponde a «queste due cose sono identiche?», mai a «che cosa era questo?».
Un hash può essere decifrato o invertito?
No. Quello che offrono i siti di ricerca non è inversione ma riconoscimento: hanno pre-calcolato l'hash di miliardi di stringhe comuni e controllano se il suo compare nella tabella. Password comuni e parole di dizionario si trovano all'istante; tutto ciò che è insolito non è nella tabella e non lo sarà mai. La funzione in sé non può essere invertita.
MD5 è ancora sicuro da usare?
Solo per rilevare danneggiamenti accidentali, come verificare che un download sia arrivato integro o trovare file duplicati. Contro un attacco deliberato è completamente compromesso — due file diversi con lo stesso MD5 si creano in pochi secondi. Anche SHA-1 è compromesso, dimostrato nel 2017 con PDF in collisione. Usi SHA-256 per qualsiasi cosa che riguardi la fiducia.
Quale algoritmo di hash dovrei usare?
SHA-256 per quasi tutto. È veloce, ampiamente supportato e non ha attacchi di collisione pratici noti. SHA-512 è un'alternativa ragionevole e può essere più rapido sui sistemi a 64 bit, pur non essendo in pratica sensibilmente più sicuro. Riservi MD5 e SHA-1 alla compatibilità con sistemi esistenti e ai controlli che non riguardano la sicurezza.
Posso usarlo per calcolare l'hash delle password del mio sito?
La prego di non farlo. Gli hash veloci come SHA-256 sono lo strumento sbagliato: l'hardware ne calcola miliardi al secondo, quindi un database rubato viene forzato rapidamente. Usi bcrypt, scrypt o Argon2, che aggiungono un salt unico per ogni password e sono deliberatamente lenti. Si affidi sempre a una libreria consolidata invece di costruire da sé la memorizzazione delle password.
Perché il mio hash non corrisponde a quello pubblicato sul sito?
Quasi sempre per una differenza invisibile nell'input. Uno spazio finale, un a capo mancante o in più alla fine, oppure fine riga Windows invece di Unix cambiano completamente l'hash — è l'effetto valanga che funziona correttamente. Controlli anche di confrontare lo stesso algoritmo, dato che una pagina può elencarne diversi.
Il mio testo viene inviato a un server?
No. Gli hash SHA sono calcolati dall'implementazione Web Crypto integrata nel suo browser e MD5 è calcolato in JavaScript, entrambi interamente sul suo dispositivo. Nulla viene trasmesso o memorizzato, e lo strumento funziona anche con la connessione spenta.
Strumenti correlati
- Checksum di file — calcolare l'hash di un file vero invece che di testo incollato
- Generatore di password — creare password robuste, che val la pena memorizzare come si deve
- Codifica / decodifica Base64 — codifica che, a differenza dell'hashing, è reversibile
- Decodificatore JWT — token le cui firme si basano su queste funzioni di hash