A cosa servono gli hash
Una funzione di hash trasforma dati di qualsiasi lunghezza in un valore di lunghezza fissa, l'impronta digitale. Gli stessi dati danno sempre lo stesso hash; basta un bit diverso per ottenerne uno completamente diverso. Dall'hash non si ricava il contenuto. Per questo un hash non è una cifratura: non c'è nulla da decifrare, ma input brevi o prevedibili (per esempio password semplici) si trovano provando candidati e con tabelle precalcolate.
Usi tipici: verificare l'integrità di download e backup, confrontare file o trovare duplicati, costruire chiavi di cache e indirizzi di contenuto (Git, digest di Docker), attributi di integrità per gli script (sha384-… nella Subresource Integrity) e firme digitali, che firmano l'hash del documento.
Con HMAC entra in gioco una chiave segreta: solo chi la conosce può calcolare il valore corretto. I webhook lo usano per proteggere i messaggi (per esempio X-Hub-Signature-256 su GitHub). Qui puoi ricalcolare HMAC-SHA-256 e HMAC-SHA-512 quando una firma non torna.
Quale algoritmo? MD5 e SHA-1 sono violati
- SHA-256 è la scelta predefinita: disponibile ovunque, veloce, sicuro. Nel dubbio usa questo.
- SHA-384 e SHA-512 fanno parte della stessa famiglia SHA-2. Producono valori più lunghi e su sistemi a 64 bit sono spesso più veloci. SHA-384 è una variante troncata di SHA-512 ed è usata, per esempio, nella Subresource Integrity.
- SHA-1 è considerato violato: collisioni reali sono note dal 2017, seguite da attacchi con prefisso scelto nel 2019/2020. Per firme e certificati non è più ammesso.
- MD5 è violato da ancora più tempo; le collisioni si generano in pochi secondi. Non usare mai MD5 dove può esserci un attaccante. Per semplici checksum contro errori di trasferimento o per il confronto con sistemi legacy è ancora diffuso, ed è per questo che qui è segnato esplicitamente come «non sicuro».
- Le password non vanno in un semplice SHA-256. Servono schemi volutamente lenti come Argon2id, scrypt, bcrypt o PBKDF2.
Verificare i download: sha256sum, shasum, Get-FileHash
Confronta l'hash del file scaricato con quello pubblicato dal fornitore. Qui basta scegliere il file nel campo apposito: non viene caricato, ma letto in locale. Da riga di comando:
- Linux:
sha256sum file.iso; con l'elenco del fornitore:sha256sum -c SHA256SUMS --ignore-missing - macOS:
shasum -a 256 file.iso - Windows PowerShell:
Get-FileHash file.iso -Algorithm SHA256; nel prompt dei comandicertutil -hashfile file.iso SHA256 - Ovunque con OpenSSL:
openssl dgst -sha256 file.iso
Incolla il valore atteso nel campo di confronto: maiuscole e spazi non contano e viene riconosciuta anche un'intera riga di SHA256SUMS. Attenzione: se l'hash si trova nella stessa pagina del download, protegge solo dagli errori di trasferimento, non da una pagina manomessa. Controlla anche la firma (GPG), se il fornitore la mette a disposizione.
Domande frequenti
- Perché l'hash del mio testo è diverso da
sha256sum? Di solito per il ritorno a capo finale:echo abc | sha256sumcalcola l'hash di «abc» più un newline. Usaprintf %s abc | sha256sumoppureecho -n abc. Anche i fine riga (LF o CRLF) e la codifica dei caratteri cambiano l'hash; questo strumento codifica il testo in UTF-8. - Il mio file viene caricato? No. Viene letto nel browser come ArrayBuffer e calcolato in locale. Per via della memoria il limite è 512 MB.
- Hex o Base64? L'hex è l'uso comune con
sha256sume i digest di Docker; Base64 con la Subresource Integrity e in molte API. È lo stesso valore scritto in modo diverso, e il campo di confronto li capisce entrambi. - Perché niente HMAC con MD5 o SHA-1? Sono offerti di proposito solo HMAC-SHA-256 e HMAC-SHA-512, perché gli altri non sono più consigliati per nuovi progetti.
- La chiave è vuota? HMAC richiede una chiave non vuota, altrimenti lo strumento mostra un errore.
Privacy
Gira interamente nel tuo browser; non viene inviato né salvato nulla.