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:
HAVAL("The quick brown fox jumps over the lazy dog", 256, 5) =
b89c551cdfe2e06dbd4cea2be1bc7d557416c58ebb4d07cbc94e49f710c55be4
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:
HAVAL("The quick brown fox jumps over the lazy cog", 256, 5) =
60983bb8c8f49ad3bea29899b78cd741f4c96e911bbc272e5550a4f195a4077e
Questo è invece l'hash di una stringa di lunghezza zero:
HAVAL("", 256, 5)
= be417bb4dd5cfb76c7126f4f8eeb1553a449039307b1a3cd451dbfdc0fbbe330
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[1].
Note
Collegamenti esterni