Glossary
SHA-256
Lo standard moderno per le funzioni hash
By Buğra SözeriPublished Updated
SHA-256 è una funzione hash crittografica pubblicata dal National Institute of Standards and Technology (NIST) degli Stati Uniti nel 2001 come parte della famiglia SHA-2 (FIPS PUB 180-4). Prende un input di qualsiasi lunghezza e produce un output a lunghezza fissa di 256 bit (32 byte, 64 caratteri esadecimali).
La funzione è deterministica (lo stesso input produce sempre lo stesso output), unidirezionale (computazionalmente impossibile ricavare l’input dall’output) e resistente alle collisioni (computazionalmente impossibile trovare due input diversi che producono lo stesso output). Al 2026 non è stato dimostrato alcun attacco pratico alla resistenza alle collisioni di SHA-256.
Dove appare SHA-256: firme dei certificati TLS, firme JWT (HS256, RS256, ES256 — il 256 è SHA-256), hash dei blocchi Bitcoin (applicato due volte), autenticazione dei messaggi HMAC-SHA256, il prossimo formato degli oggetti SHA-256 di Git e praticamente ogni moderno stack di verifica dell’integrità.
Calcolare gli hash SHA-256 tramite il nostro generatore di hash, che usa la Web Crypto API del browser (crypto.subtle.digest) sotto il cofano.
Per cosa SHA-256 non è costruito — e l’errore sulle password: SHA-256 è veloce per design. Una moderna GPU calcola miliardi di hash SHA-256 al secondo, il che è eccellente per verificare l’integrità dei file ma un disastro per l’hashing delle password. Un attaccante che ruba un database di hash SHA-256 puri delle password può recuperare la maggior parte delle password deboli in ore tramite forza bruta. L’hashing delle password richiede una funzione deliberatamente lenta con un salt per utente — bcrypt, scrypt, Argon2 — che regola il fattore di costo in modo che ogni hash richieda ~100 ms invece di ~100 ns. Memorizzare le password degli utenti come semplice SHA256(password) è uno degli errori più costantemente sfruttati nelle violazioni dei dati. Se si ricorda una sola cosa: SHA-256 per l’integrità, Argon2id per le password.
Double-SHA-256, estensione della lunghezza e la correzione HMAC: SHA-256 eredita la costruzione di Merkle-Damgård usata da SHA-1 e MD5, il che significa che è vulnerabile agli attacchi di estensione della lunghezza — dato H(secret || message) un attaccante può calcolare H(secret || message || padding || extra) senza conoscere il segreto. Questo è il motivo per cui le API naive “firma il body con SHA256(key + body)” degli anni 2010 sono state tutte sostituite da HMAC-SHA256, che avvolge la costruzione con due hash con chiave e non è estendibile per lunghezza. Il “double-SHA-256” di Bitcoin (SHA256(SHA256(x))) è una mitigazione diversa contro la stessa famiglia di attacchi ed è non correlata a HMAC. Correlati: JWS, firma, SHA-256 vs MD5. Riferimento: NIST FIPS 180-4 — Secure Hash Standard.
Esempio pratico
L’hash SHA-256 della stringa vuota è la costante nota e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. L’hash del singolo byte "a" è ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb. Cambiate un bit — diciamo in "b" — e l’hash diventa 3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d, senza apparente relazione con l’output precedente. Questa è la proprietà “valanga” in azione: ogni bit di input influenza circa metà dei bit di output. Per verificare un download da 1 GB, si confronta il suo SHA-256 (una stringa esadecimale di 64 caratteri che il fornitore pubblica) con quello calcolato localmente. Se corrispondono, il file è bit per bit identico con una probabilità indistinguibile dalla certezza (la probabilità di una collisione essendo 2⁻¹²⁸, meno che scegliere lo stesso atomo dall’universo osservabile a caso).
Quando e perché è importante
SHA-256 è la primitiva di integrità per quasi tutto ciò di cui ci si fida sulla moderna internet. Le catene di certificati TLS sono firmate con RSA/ECDSA su digest SHA-256; i JWT usano HMAC-SHA256 per impostazione predefinita; i digest delle immagini Docker, i nuovi ID degli oggetti di Git, la firma del codice di Apple e l’intera blockchain di Bitcoin fanno tutti hash tramite SHA-256. Vale la pena conoscere tre modalità di guasto: sostituire SHA-1 o MD5 (entrambi compromessi per la resistenza alle collisioni — le collisioni SHA-1 sono state dimostrate nel 2017), usare SHA-256 direttamente per le password invece di Argon2id (vedi sopra) e fidarsi di SHA-256 troncato sotto i 128 bit come resistente alle collisioni (il confine del birthday su un prefisso a 96 bit è solo 2⁴⁸ — alla portata di un attaccante determinato). Riferimento: NIST CSRC — Funzioni hash.
Prova il calcolatore
Calcola un digest SHA-256 (o SHA-1, MD5) per qualsiasi testo direttamente nel browser.
Apri lo strumento hash →Frequently asked questions
- Cos’è SHA-256?
- SHA-256 è una funzione hash crittografica della famiglia SHA-2 che produce un digest fisso a 256 bit (32 byte) da qualsiasi input. È deterministica, unidirezionale (resistente alla preimmagine) e resistente alle collisioni: cambiare un singolo bit nell’input cambia completamente l’output.
- Come viene usato SHA-256 in pratica?
- SHA-256 è usato per verificare l’integrità dei file (i package manager confrontano gli hash dei download), nelle impronte digitali dei certificati TLS, come funzione proof-of-work nel mining Bitcoin e all’interno di HMAC per la firma delle richieste API. Git usa una variante SHA-256 per identificare commit e blob.
- Qual è la differenza tra SHA-256 e MD5?
- MD5 produce un digest a 128 bit ed è crittograficamente compromesso -- le collisioni possono essere generate in secondi su hardware comune. SHA-256 produce un digest a 256 bit, non ha attacchi di collisione pratici noti ed è lo standard attualmente raccomandato per la verifica dell’integrità e le firme digitali.
Related
Published May 14, 2026 · Last reviewed May 31, 2026