Dans la routine Mix Column de mon algo, il y a des multiplications à effectuer sur des polynomes représentés par des vecteurs.
Je prend un vecteur pour exemple : V[7..0]
Multiplication du vecteur par 2 : equivalent à un decalage a gauche.
J'obtiens donc un vecteur d'un bit plus grand :
V[7..0] = 10110011
==> RESULTAT[8..0] = 10110011
0
Multiplication du vecteur par 3 : equivalent à un decalage a gauche suivi d'un XOR avec le vecteur d'origine.
V[7..0] = 10110011
==> TEMP[8..0] = 10110011
0
RESULTAT [8..0] = TEMP[8..0] XOR
010110011 ;
Comme vous pouvez constater, on ajoute un 0 en tete du vecteur d'origine pour respecter le format 9 bits.
Cet algo fonctionne très bien.
Alors, là où ça coince, c'est pour le decryptage :
Je dois effectuer des multiplications par 9, 11, 13 et 14...
Pour le 9, j'ai pensé à l'opération suivante :
- multiplication par 8 (decalage a gauche de 3 bits)
- XOR avec le vecteur d'origine
Mais j'ignore si c'est correct, je ne peux malheureusement pas faire des tests simples aussi profondement dans le code, je n'ai qu'un resultat final deterministe "brut de pomme" en sortie du système (j'ai le resultat théorique).
Pour les 11, 13 et 14, je sèche...
Mes questions :
Pourriez-vous m'éclairer sur le fonctionnement du XOR dans ce contexte?
Comment auriez-vous fait? (meme une idée vague est bienvenue)
Merci d'avance.
PS : Je peux vous fournir des codes détaillés si vous voulez; j'ai essayé d'élager un peu dans ce paragraphe. Pour toute précision supplémentaire, je reste dispo.
PS 2 : je vous donne des liens vers la doc que j'utilise:
http://islab.oregonstate.edu/koc/ece575 ... ajan-Park/
Module "mix_column.vhd"
http://www-id.imag.fr/~svarrett/enseign ... et_AES.pdf
Page 9