Un hash, in informatica, è il risultato di una funzione di hash, che è un algoritmo che trasforma un input (o “messaggio”) di lunghezza arbitraria in un output di lunghezza fissa, generalmente una sequenza di numeri e lettere. Questo output è comunemente chiamato “digest” o “impronta digitale”.
Caratteristiche di una funzione di hash
- Deterministica: La stessa input produce sempre lo stesso output.
- Velocità di calcolo: Deve essere veloce da calcolare per qualsiasi input.
- Output di lunghezza fissa: Indipendentemente dalla lunghezza dell’input, l’output avrà una lunghezza fissa (ad esempio, 256 bit per SHA-256).
- Pre-immagine resistente: Dato un hash, dovrebbe essere computazionalmente difficile risalire all’input originale.
- Seconda pre-immagine resistente: Dato un input e il suo hash, dovrebbe essere difficile trovare un altro input che produca lo stesso hash.
- Resistente alle collisioni: Dovrebbe essere difficile trovare due diversi input che producano lo stesso hash.
Utilizzi degli hash
- Verifica dell’integrità dei dati: Confrontando l’hash di un file o messaggio con un hash noto, si può verificare che il file o messaggio non sia stato alterato.
- Firma digitale: Gli hash sono usati per generare firme digitali, che garantiscono l’autenticità e l’integrità dei messaggi.
- Archiviazione sicura delle password: Le password vengono spesso archiviate sotto forma di hash per impedire che vengano recuperate in caso di compromesso del database.
- Hashing nelle strutture dati: Le tabelle hash utilizzano funzioni di hash per mappare chiavi a valori in modo efficiente.
- Blockchain e criptovalute: Gli hash sono fondamentali nel funzionamento delle blockchain, dove garantiscono l’integrità e la sicurezza delle transazioni.
Esempio di funzioni di hash
Alcune delle funzioni di hash più comuni includono:
- MD5: Produce un hash di 128 bit. Non è più considerato sicuro per molte applicazioni a causa delle vulnerabilità alle collisioni.
- SHA-1: Produce un hash di 160 bit. Anche questo non è più considerato sicuro per molte applicazioni.
- SHA-256: Parte della famiglia SHA-2, produce un hash di 256 bit ed è ampiamente utilizzato.
- SHA-3: L’ultima famiglia di funzioni di hash standardizzata, con diverse varianti (SHA3-224, SHA3-256, SHA3-384, SHA3-512).
Esempio pratico di un hash
Consideriamo l’input “hello world” e la funzione di hash SHA-256. L’hash prodotto sarà una stringa esadecimale di 64 caratteri (256 bit):
Input: “hello world”
SHA-256 Hash: b94d27b9934d3e08a52e52d7da7dabfae7f4fa80ad21e1009f99e2519f82dd0d
In sintesi, un hash in informatica è uno strumento essenziale per la sicurezza e l’integrità dei dati, utilizzato in una vasta gamma di applicazioni per garantire che le informazioni siano autentiche e non alterate.