🌐 IT

🔐 Generatore di hash

Converti il testo in diversi algoritmi di hash. Utile per verificare l'integrità dei file, l'hashing delle password e la convalida dei dati.

Seleziona un file per generare l'hash del contenuto del file
GUIDA

Scopri di piu

01

1. Cosa sono le funzioni hash

Le funzioni hash sono funzioni unidirezionali che convertono dati di qualsiasi dimensione in valori di dimensione fissa. Presentano l'effetto valanga, per cui anche una piccola modifica nell'input produce un hash completamente diverso, e lo stesso input produce sempre lo stesso output. MD5 genera hash a 128 bit, SHA-1 a 160 bit e SHA-256 a 256 bit. Poiché gli hash sono funzioni unidirezionali che non possono essere decriptate, sono ideali per verificare l'integrità nascondendo i dati originali. Sono ampiamente usati nella verifica dei file scaricati, nell'archiviazione delle password, nella blockchain, nelle firme digitali e altro ancora.

02

2. Confronto tra gli algoritmi MD5 e SHA

MD5 è un hash a 128 bit sviluppato nel 1991, molto veloce ma vulnerabile agli attacchi di collisione. Gravi vulnerabilità di sicurezza scoperte nel 2004 lo rendono inadatto a scopi crittografici ed è usato solo per checksum dei file. SHA-1 è un hash a 160 bit più sicuro di MD5, ma l'annuncio di Google nel 2017 di casi reali di collisione ne ha portato al disuso. SHA-256 appartiene alla famiglia SHA-2, genera hash a 256 bit ed è attualmente lo standard più usato. Anche Bitcoin usa SHA-256. SHA-512 offre una sicurezza maggiore con 512 bit, ma è più lento. I nuovi sistemi dovrebbero usare SHA-256 o superiore.

03

3. Sicurezza e vulnerabilità degli hash

Le funzioni hash hanno tre requisiti principali di sicurezza. Primo, la resistenza alla preimage: dovrebbe essere difficile risalire all'originale dal valore hash. Secondo, la resistenza alla seconda preimage: dovrebbe essere difficile trovare un altro input che produca lo stesso hash. Terzo, la resistenza alle collisioni: dovrebbe essere difficile trovare due input diversi che producano lo stesso hash. MD5 e SHA-1 hanno una resistenza alle collisioni compromessa, consentendo agli attaccanti di creare intenzionalmente lo stesso hash. Gli attacchi con rainbow table usano tabelle di hash precomputate per risalire ai dati originali, ma l'aggiunta di un salt può difendere da questo.

04

4. Verifica dell'integrità dei file

Gli hash dei file sono il modo più efficace per verificare che i file scaricati non siano stati manomessi. I siti di distribuzione del software forniscono i valori hash ufficiali insieme ai file. Gli utenti calcolano l'hash del file dopo il download e lo confrontano con il valore ufficiale. Anche una differenza di un solo bit produce un hash completamente diverso, rilevando subito eventuali manomissioni. È essenziale per immagini ISO Linux, software open source, transazioni blockchain e altro. Anche Git genera hash SHA-1 per ogni commit per garantire l'integrità del codice. Un hash può rilevare danni causati da errori di rete durante il trasferimento di file di grandi dimensioni.

05

5. Buone pratiche per l'hashing delle password

Non memorizzare mai le password in chiaro nei database. Devono essere convertite in hash, ma un semplice MD5 o SHA-256 non è sufficiente. Sono vulnerabili agli attacchi con rainbow table. Devi aggiungere un salt. Il salt è una stringa casuale aggiunta alla password, che fa sì che la stessa password produca hash diversi. Inoltre, usa funzioni hash lente come bcrypt, scrypt o Argon2. Queste rallentano volutamente il calcolo per rendere difficili gli attacchi brute force. OWASP raccomanda Argon2 come priorità assoluta per l'hashing delle password.

06

6. Rainbow table e salt

Le rainbow table sono enormi database di valori hash precomputati. Memorizzano in anticipo gli hash di milioni di password comuni e li confrontano con hash rubati per trovare le password originali. Ad esempio, l'MD5 di "password123" è sempre "482c811da5d5b4bc6d497ffa98491e38", quindi può essere trovato subito nella tabella. Il salt difende da questo. Aggiungendo una stringa casuale unica per ogni utente, la stessa password produce hash diversi. L'hashing di "password123" + "x8k2m9" produce un valore non presente nelle rainbow table. Il salt può essere memorizzato in chiaro nel DB e ogni password deve usare un salt diverso per essere efficace.

Domande frequenti

Il mio testo o file viene inviato a un server?
No. Tutto l'hashing viene eseguito lato client nel tuo browser con JavaScript, non viene caricato nulla. Il tuo testo e i tuoi file restano sul tuo dispositivo.
Posso usare questo strumento per fare l'hash delle password da salvare?
Non lo consigliamo. MD5 e SHA-256 sono hash veloci e vulnerabili agli attacchi brute force, quindi le password dovrebbero usare invece una funzione lenta e dedicata come bcrypt, scrypt o Argon2. Questo strumento è più adatto alla verifica dell'integrità dei file e ai checksum dei dati.
Quale algoritmo dovrei scegliere?
Usa SHA-256 o superiore per qualsiasi progetto nuovo. MD5 e SHA-1 hanno una resistenza alle collisioni compromessa e non sono adatti alla sicurezza: conservali solo per la compatibilità con sistemi legacy.
Quando dovrei usare l'opzione HMAC?
HMAC (hash con chiave) verifica che un messaggio provenga da un mittente che possiede una chiave segreta specifica. Usalo quando ti servono autenticazione e integrità, ad esempio per firmare richieste API o verificare webhook.
Perché a volte lo stesso input produce un hash diverso?
Per lo stesso algoritmo e lo stesso input, l'hash è sempre identico, a meno che tu non abbia usato una chiave HMAC o l'opzione maiuscole. Se il risultato cambia, controlla differenze sottili nell'input, come spazi extra o interruzioni di riga.