Che cos’è una funzione hash?

Una funzione hash è un metodo di controllo degli errori del computer e di organizzazione dei dati. Una grande quantità di dati viene manipolata con un algoritmo matematico fino a quando ne rimane un piccolo numero. Questo numero viene utilizzato come parte del catalogo che consente a un computer di trovare quella specifica informazione in un secondo momento. Una buona funzione di hash dovrebbe dare un risultato abbastanza piccolo da essere facile da usare, ma fornisce un risultato unico per ogni set di dati. Una funzione di hash fornisce anche un controllo degli errori minimo, poiché un dato corrotto e buono dovrebbe produrre risultati diversi quando viene sottoposto a hash.

In un database di computer, in genere è più semplice salvare posizioni con numeri anziché con lettere. Le cifre hanno un numero molto maggiore di metodi per l’organizzazione e l’ordinamento rispetto alle lettere. Di conseguenza, i numeri vengono spesso assegnati a posizioni contenenti informazioni variabili all’interno del database di un computer. Questi numeri possono essere arbitrari o rappresentativi delle informazioni.

I numeri arbitrari vengono assegnati semplicemente in base alla posizione nella memoria del computer o all’ordine in cui i dati sono stati salvati. Il salvataggio delle informazioni in questo modo è comune nei database più piccoli o in luoghi in cui i dati non cambiano molto spesso. Quando viene utilizzato in altre aree, la reindicizzazione del database inizia a richiedere sempre più tempo fino a quando non è più efficiente.

L’informazione rappresentativa è dove entra in gioco la funzione hash. L’informazione, indipendentemente da ciò che contiene, viene tradotta in numeri. Questi numeri vengono inseriti in un costrutto matematico che restituisce un numero piccolo, in genere un numero intero. Se la funzione hash funziona correttamente, ogni posizione in quella parte del database avrà il suo risultato univoco. Se due o più posizioni hanno lo stesso risultato, i programmi potrebbero visualizzare informazioni errate basate sull’hash duplicato.

È possibile utilizzare una funzione hash anche per altre cose. Grandi quantità di dati altamente ripetitivi possono essere scomposte in valori più piccoli. Ciò è particolarmente utile quando si cercano sequenze ripetute in insiemi di dati di grandi dimensioni. Ad esempio, l’acido desossiribonucleico (DNA) è costituito da un numero molto ridotto di componenti diversi. Quando si scompongono questi componenti utilizzando valori hash, i punti in cui due stringhe di DNA sono uguali e diverse diventano molto chiari, semplicemente confrontando due piccole colonne di numeri.

L’ultima area in cui le funzioni hash sono utili è il controllo degli errori. Quando le informazioni vengono inizialmente crittografate, il valore viene registrato come parte dell’indice della posizione. Se tali informazioni sono necessarie in un secondo momento, le informazioni vengono recuperate insieme a quel valore. Se il programma rielabora le informazioni e il risultato è diverso, a un certo punto si è verificata una corruzione. Questo danneggiamento è in genere con i dati, poiché un danneggiamento dell’hash avrebbe impedito il recupero dei dati in primo luogo.