RevealTheme logo

Generatore di hash (MD5 / SHA)

Genera hash crittografici: MD5, SHA-1, SHA-256, SHA-384 e SHA-512. Viene eseguito nel suo browser tramite la Web Crypto API.

Che cosa sono gli hash crittografici e quando ne ha bisogno?

Una funzione di hash crittografica è un algoritmo deterministico che converte qualsiasi input (pochi byte, un file di diversi gigabyte o l'intera Wikipedia in inglese) in un output di dimensione fissa chiamato 'digest' o 'hash'. SHA-256 produce 256 bit (64 caratteri esadecimali); SHA-512 produce 512 bit; MD5 produce 128 bit. Quattro proprietà definiscono un hash 'crittografico', in contrapposizione a uno non crittografico (come CRC32): determinismo (stesso input → stesso hash, sempre), effetto valanga (cambiando un solo bit cambia circa la metà dei bit di output), resistenza alla preimmagine (non si può invertire l'hash per recuperare l'input) e resistenza alle collisioni (non si possono trovare due input che producono lo stesso hash). Quando una funzione di hash viene compromessa, di solito vengono meno queste ultime due proprietà: gli attacchi di collisione contro MD5 (2004) e SHA-1 (2017) li hanno resi inadatti a fini di sicurezza, anche se restano utili per controlli di integrità non avversariali, come le somme di controllo dei file. Usi SHA-256 o SHA-512 per qualsiasi nuovo lavoro di sicurezza. Questo strumento usa la Web Crypto API del browser (crypto.subtle.digest), accelerata via hardware sui dispositivi moderni, e produce un output identico byte per byte a quello di OpenSSL, del modulo hashlib di Python e del modulo crypto di Node.

Casi d'uso comuni

  • Verifica che un file scaricato corrisponda allo SHA-256 indicato dall'editore (ISO Linux, release di strumenti di sicurezza).

  • Genera un identificatore indirizzabile per contenuto per le chiavi di cache (hash del contenuto → URL stabile).

  • Crea una chiave di deduplicazione per archiviare i file (se gli hash coincidono, il file è identico).

  • Costruisci la verifica della firma dei webhook: HMAC-SHA256 del payload con un segreto condiviso.

  • Genera hash di contenuto in stile Git (SHA-1 per gli identificatori di tree o blob).

  • Convalida l'integrità di una riga del database calcolando l'hash delle sue colonne chiave e memorizzandolo.

Domande frequenti

Perché MD5 è obsoleto per la sicurezza?
I crittografi hanno trovato modi per costruire due input distinti che producono lo stesso MD5. Una volta che le collisioni sono individuabili, MD5 cessa di essere un segnale di integrità affidabile in scenari avversariali (qualcuno potrebbe sostituire un file e generarne un altro con lo stesso hash). Per le somme di controllo non avversariali (il file è stato scaricato correttamente?), MD5 continua a funzionare bene; è insicuro solo per le firme digitali o per qualsiasi cosa influenzata da un aggressore.
Si possono invertire gli hash?
Non direttamente: gli hash crittografici sono funzioni a senso unico. Tuttavia: (1) per input brevi o a bassa entropia (password, frasi comuni), un aggressore può precalcolare gli hash di ogni input probabile (tabelle arcobaleno) e cercare il suo. Per questo l'hashing delle password usa sali casuali e univoci. (2) Per input di lunghezza arbitraria e ad alta entropia (chiavi casuali, contenuto di file), l'inversione è computazionalmente impraticabile.
Qual è la differenza tra SHA-256 e HMAC-SHA256?
SHA-256 è un hash semplice: chiunque possieda l'input può calcolare lo stesso hash. HMAC-SHA256 è un hash con chiave: serve un segreto condiviso per calcolarlo. I webhook usano HMAC perché il verificatore vuole sapere 'questo è stato creato da qualcuno che conosce il segreto?', non solo 'il payload corrisponde a un valore noto?'. Usi il nostro Generatore di HMAC per la variante con chiave.
Quando devo usare SHA-512 al posto di SHA-256?
SHA-512 ha più bit di output (512 contro 256), il che rende gli attacchi di collisione teoricamente più difficili. Ma SHA-256 è già sicuro ben oltre qualsiasi orizzonte temporale ragionevole (forza effettiva contro le collisioni di 2^128). SHA-512 è talvolta più veloce su hardware a 64 bit grazie alle sue operazioni interne più ampie. Usi SHA-256 come impostazione predefinita; usi SHA-512 se ha un motivo concreto.
Perché il mio hash SHA differisce da quello di un altro strumento?
Tre cause probabili: (1) Codifica dell'input diversa: i byte a cui si applica l'hash devono coincidere. UTF-8, UTF-16 o Latin-1 producono hash diversi per lo stesso testo visibile. Questo strumento codifica l'input come UTF-8. (2) Interruzione di riga finale: alcuni strumenti aggiungono un'interruzione di riga e altri no. (3) BOM (marca dell'ordine dei byte): un prefisso nascosto di tre byte che alcuni editor aggiungono ai file UTF-8.
È sicuro usarlo con dati sensibili?
Sì: il calcolo dell'hash avviene localmente nel suo browser tramite Web Crypto. L'input non lascia mai il suo dispositivo. Gli hash in sé non sono 'sensibili', nel senso che non rivelano l'input (presupponendo entropia sufficiente), ma se calcola l'hash di dati a bassa entropia (come password senza sale), tenga presente che chiunque veda l'hash potrebbe riuscire a invertirlo tramite tabelle arcobaleno.

Strumenti correlati