b'\n_START_ARTICLE_\nFunzione di Hash\n_START_PARAGRAPH_\nLa funzione di hash o funzione hash \xc3\xa8 una funzione. La parola prende il nome dal termine  hash (dall\'inglese to hash, ovvero sminuzzare, pasticciare) che designa originariamente una polpettina fatta di avanzi di carne e verdure; per estensione indica un composto eterogeneo cui viene data una forma incerta: "To make a hash of something" vuol dire infatti creare confusione, o fare una cosa piuttosto male.\n_START_SECTION_\nHash uniforme semplice\n_START_PARAGRAPH_\nSi definisce hash uniforme semplice quel tipo Hash in cui l\'estrazione degli elementi in U \xc3\xa8 casuale, e la funzione hash_NEWLINE_h: U \xe2\x86\x92 {m}_NEWLINE_estrae la chiave con probabilit\xc3\xa0 _NEWLINE_In tali condizioni la ricerca della chiave avr\xc3\xa0 complessit\xc3\xa0 costante O(1).\n_START_SECTION_\nHash e collisioni\n_START_PARAGRAPH_\nNon esiste una corrispondenza biunivoca tra l\'hash e il testo. Dato che i testi possibili, con dimensione finita maggiore dell\'hash, sono pi\xc3\xb9 degli hash possibili, per il principio dei cassetti ad almeno un hash corrisponderanno pi\xc3\xb9 testi possibili. Quando due testi producono lo stesso hash, si parla di collisione, e la qualit\xc3\xa0 di una funzione di hash \xc3\xa8 misurata direttamente in base alla difficolt\xc3\xa0 nell\'individuare due testi che generino una collisione. Per sconsigliare l\'utilizzo di algoritmi di hashing in passato considerati sicuri \xc3\xa8 stato infatti sufficiente che un singolo gruppo di ricercatori riuscisse a generare una collisione. Questo \xc3\xa8 quello che \xc3\xa8 avvenuto ad esempio per gli algoritmi SNEFRU, MD2, MD4, MD5 e SHA-1._NEWLINE_Un hash crittograficamente sicuro non dovrebbe permettere di risalire, in un tempo confrontabile con l\'utilizzo dell\'hash stesso, ad un testo che possa generarlo.\n_START_SECTION_\nHash e basi di dati\n_START_PARAGRAPH_\n\xc3\x88 possibile utilizzare le funzioni di hash per creare una hash table, che \xc3\xa8 una struttura dati molto efficiente per le operazioni di ricerca. La hash table contiene dati associati ad una chiave di ricerca e viene spesso utilizzato nei database per indicizzare gli elementi che saranno oggetto di ricerca. Questa tecnica (detta di hashing) permette di realizzare funzioni di ricerca che riescono ad individuare l\'elemento desiderato in un tempo costante, indipendente (almeno in teoria) dal numero di elementi presenti nell\'indice.\n_START_SECTION_\nProtezione dagli errori\n_START_PARAGRAPH_\nL\'uso delle funzioni hash per trovare errori nelle trasmissioni \xc3\xa8 molto comune. La funzione hash viene calcolata dal mittente a partire dai dati e il suo valore \xc3\xa8 inviato insieme ai dati. Il ricevente calcola di nuovo la funzione hash, e se i valori hash non corrispondono, significa che \xc3\xa8 avvenuto un errore durante la trasmissione. Questo metodo consente un controllo dell\'integrit\xc3\xa0 dei dati migliore della pi\xc3\xb9 tradizionale checksum.\n_START_SECTION_\nInformatica forense\n_START_PARAGRAPH_\nGli algoritmi di hash, in particolare SHA1 e MD5, sono largamente utilizzati nell\'ambito dell\'informatica forense per validare e in qualche modo "firmare" digitalmente i dati acquisiti, tipicamente le copie forensi. La recente legislazione impone infatti una catena di custodia che permetta di preservare i reperti informatici da eventuali modifiche successive all\'acquisizione: tramite i codici hash \xc3\xa8 possibile in ogni momento verificare che quanto repertato sia rimasto immutato nel tempo. Se i codici hash corrispondono, entrambe le parti in un procedimento giudiziario hanno la ragionevole certezza di lavorare sulla stessa versione dei reperti, garantendo quindi una uniformit\xc3\xa0 di analisi e in genere di risultati. I risultati dei codici hash vengono ormai calcolati di default dalla maggioranza dei software per acquisizione forense e allegati alle copie forensi salvate.'