Come usare il generatore di hash
- Digita o incolla il testo di cui vuoi calcolare l'hash.
- I digest MD5, SHA-1, SHA-256, SHA-384 e SHA-512 vengono calcolati mentre scrivi, mostrati in esadecimale.
- Per verificare un valore, incolla l'hash atteso nel campo di confronto; lo strumento ti dice se corrisponde.
Gli hash vengono calcolati nel tuo browser con la Web Crypto API e JavaScript; il testo che inserisci non viene mai caricato né memorizzato.
Cos'è un hash crittografico?
Una funzione di hash trasforma un input di qualsiasi lunghezza in un'impronta di lunghezza fissa, chiamata digest. Un buon hash crittografico è:
- Deterministico: lo stesso input produce sempre lo stesso digest.
- A senso unico: non è praticamente possibile ricavare l'input dal digest.
- Resistente alle collisioni: è impraticabile trovare due input diversi con lo stesso digest.
- Sensibile: cambiare un solo bit dell'input cambia circa la metà dei bit dell'output.
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("hello\n")= 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
Scegliere un algoritmo
| Algoritmo | Dimensione del digest | Stato |
|---|---|---|
| MD5 | 128 bit | Violato: le collisioni si possono generare rapidamente con hardware ordinario. Solo per checksum non legati alla sicurezza. |
| SHA-1 | 160 bit | Violato per la resistenza alle collisioni: collisioni pratiche sono state dimostrate pubblicamente. In via di dismissione. |
| SHA-256 | 256 bit | Sicuro e la scelta moderna più comune. |
| SHA-384 / SHA-512 | 384 / 512 bit | Sicuri; SHA-512 può essere più veloce di SHA-256 sulle CPU a 64 bit. |
Per tutto ciò che riguarda la sicurezza (firme, certificati, integrità dei download da mirror non attendibili) usa SHA-256 o più robusto. MD5 e SHA-1 restano accettabili solo per rilevare corruzioni accidentali dove nessuno cerca di falsificare una corrispondenza.
Errori comuni
L'hashing non è crittografia
La crittografia è reversibile con una chiave; l'hashing non è reversibile affatto. Non puoi "decifrare" un hash. Input brevi o comuni possono comunque essere trovati per tentativi: un attaccante calcola semplicemente l'hash di valori candidati finché uno corrisponde, ed è per questo che esistono tabelle di consultazione per gli MD5 delle parole comuni.
Non salvare mai le password con un semplice hash veloce
MD5, SHA-1 e perfino SHA-256 sono progettati per essere veloci, il che permette agli attaccanti di provare enormi quantità di password al secondo su GPU. Salva le password con una funzione di hashing per password dedicata, volutamente lenta e con salt: Argon2id, scrypt o bcrypt. Aggiungono un salt unico per ogni password e un fattore di lavoro regolabile.
# Da non fare
stored = sha256(password)
# Da fare (Python, argon2-cffi)
from argon2 import PasswordHasher
stored = PasswordHasher().hash(password)
Differenze invisibili nell'input
Un a capo finale, un fine riga di Windows (\r\n) o una diversa normalizzazione Unicode producono un hash completamente diverso. echo hello | sha256sum calcola l'hash di hello\n; usa printf 'hello' o echo -n per ottenere il risultato qui sopra. Questo strumento calcola l'hash dei byte UTF-8 esattamente di ciò che hai digitato.
Verificare i checksum dei file
I download di software spesso pubblicano un checksum SHA-256. Calcola l'hash del file che hai scaricato e confrontalo con il valore pubblicato:
| Sistema | Comando |
|---|---|
| Linux | sha256sum file.iso |
| macOS | shasum -a 256 file.iso |
| Windows PowerShell | Get-FileHash file.iso -Algorithm SHA256 |
| Windows cmd | certutil -hashfile file.iso SHA256 |
Su Linux, sha256sum -c SHA256SUMS controlla ogni file elencato in un file di checksum. Un checksum dimostra che il file corrisponde a ciò di cui l'editore ha calcolato l'hash; dimostra l'autenticità solo se il checksum stesso proviene da una fonte attendibile, come un file firmato o una pagina HTTPS. Puoi verificare il certificato di un sito con la verifica certificato SSL.
2CF24DBA... e 2cf24dba... sono lo stesso hash. Alcuni strumenti producono Base64 invece di esadecimale; converti con il decodificatore Base64 prima di confrontare.Domande frequenti
Un hash può essere invertito o decifrato?
No. Le funzioni di hash scartano informazioni per progetto. Input brevi o comuni si possono recuperare provando e confrontando, ma non invertendo la funzione.
MD5 è ancora sicuro da usare?
Non per la sicurezza. Le collisioni sono banali da produrre, quindi MD5 non va usato per firme, certificati o password. Va ancora bene per individuare corruzioni accidentali dei file o come chiave di cache.
Quale hash dovrei usare per le password?
Nessuno di quelli di questa pagina. Usa Argon2id, scrypt o bcrypt tramite una libreria mantenuta, che gestisce salt e fattori di lavoro al posto tuo.
Perché il mio hash è diverso da quello di un altro strumento?
Di solito perché l'input è diverso: un a capo o uno spazio in più, una diversa codifica dei caratteri, oppure l'hash di un file rispetto al suo contenuto testuale. Confronta i byte esatti di cui viene calcolato l'hash.
Aggiornato