Algoritmo di hash
L'algoritmo di hash elabora qualunque mole di bit (in informatica si dice che elabora dati "grezzi"). Si tratta
di una famiglia di algoritmi che soddisfa questi requisiti:
1. L'algoritmo restituisce una stringa di numeri e lettere a partire da un qualsiasi flusso di bit di
qualsiasi dimensione (può essere un file ma anche una stringa). L'output è detto digest.
2. La stringa di output è univoca per ogni documento e ne è un identificatore. Perciò, l'algoritmo è
utilizzabile per la firma digitale.
3. L'algoritmo non è invertibile, ossia non è possibile ricostruire il documento originale a partire dalla
stringa che viene restituita in output ovvero è una funzione unidirezionale, quest'ultima
caratteristica non è indispensabile se si usano gli hash per controllare gli errori nei trasferimenti dei
dati, dove le eventuali funzioni di criptaggio possono venir svolte in altre aree del protocollo.
Non esiste una corrispondenza biunivoca tra l'hash e il testo. Dato che i testi possibili, con dimensione finita
maggiore dell'hash, sono più degli hash possibili, per il principio dei cassetti ad almeno un hash
corrisponderanno più testi possibili.