Via Funtana 31, Ortueri (NU) - 08036, Italia

Funzione di hash

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

  1. Deterministica: La stessa input produce sempre lo stesso output.
  2. Velocità di calcolo: Deve essere veloce da calcolare per qualsiasi input.
  3. Output di lunghezza fissa: Indipendentemente dalla lunghezza dell’input, l’output avrà una lunghezza fissa (ad esempio, 256 bit per SHA-256).
  4. Pre-immagine resistente: Dato un hash, dovrebbe essere computazionalmente difficile risalire all’input originale.
  5. Seconda pre-immagine resistente: Dato un input e il suo hash, dovrebbe essere difficile trovare un altro input che produca lo stesso hash.
  6. Resistente alle collisioni: Dovrebbe essere difficile trovare due diversi input che producano lo stesso hash.

Utilizzi degli hash

  1. 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.
  2. Firma digitale: Gli hash sono usati per generare firme digitali, che garantiscono l’autenticità e l’integrità dei messaggi.
  3. Archiviazione sicura delle password: Le password vengono spesso archiviate sotto forma di hash per impedire che vengano recuperate in caso di compromesso del database.
  4. Hashing nelle strutture dati: Le tabelle hash utilizzano funzioni di hash per mappare chiavi a valori in modo efficiente.
  5. 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.