HAVAL (hash)
# HAVAL (hash)

L'HAVAL è una funzione crittografica di hashing utilizzata per generare message digest ("impronta del messaggio"), stringhe di lunghezza predefinita partendo da un messaggio di lunghezza variabile, inventata da Yuliang Zheng, Josef Pieprzyk e Jennifer Seberry nel 1992.

A differenza di altri algoritmi di hash quali l'MD5, che producono digest di lunghezza fissa, l'HAVAL può produrre hash di differenti lunghezze: 128, 160, 192, 224 e 256 bit. L'HAVAL permette anche di impostare il numero di passaggi (3, 4 o 5) da utilizzare per la generazione dell'hash.

## Hash dell'HAVAL

Gli hash dell'HAVAL (spesso indicati come impronte digitali) sono generalmente rappresentati da numeri esadecimali a 32, 40, 48, 56 o 64 cifre. Ecco un esempio di hash di un messaggio generato utilizzando 5 passaggi e richiedendo una lunghezza del digest di 256 bit:

Anche un piccolo cambiamento nel messaggio genera un hash molto differente; ecco cosa si ottiene, per esempio, cambiando una d con una c nel precedente messaggio:

Questo è invece l'hash di una stringa di lunghezza zero:

## Sicurezza

Nel 2004 Xiaoyun Wang ha presentato uno studio in cui dimostra come si può condurre un attacco di collisione all'HAVAL a 128 bit con 3 passaggi.

