OMAC/CMAC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 23:
# Si controlla il bit più significativo di <math>L.u</math>. Se è pari a 0 allora <math>L.u^2=\ (L.u)<<1</math>, diversamente <math>L.u^2=\ ((L.u)<<1)\oplus Costante</math>.
# A questo punto si memorizzano sia <math>L.u</math> che <math>L.u^2</math>.
===Generazione del codice MAC===
Sia M il messaggio. Si suddivide il messaggio M in blocchi di n bit.
#<math>Y[0]=0^n</math>, che significa riempire Y[0] con un numero n di 0.
#Per ogni i da 1 a m-1: <math>Y[i] = E(K, M[i] \oplus Y[i-1])</math>.
#Se la lunghezza dell'ultimo blocco del messaggio è di n bit allora <math>X[m] = M[m] \oplus Y[m-1] \oplus L.u</math>, altrimenti effettua il padding sull'ultimo blocco aggiungendo 1 seguito da tanti 0 quanti sono necessari a ricondurre il blocco ad una lunghezza di n bit e poi calcola <math>X[m] = M[m] \oplus Y[m-1] \oplus L.u^2</math>.
#<math>T\ = E(K, X[m])</math>.
#Il codice MAC sarà il troncamento di T a t bit.
==OMAC2==
|