Principe de ShiftRow

ShiftRow fait partie, avec MixColumn de la couche de diffusion.
Le but est d'introduire de la confusion dans les données en modifiant l'ordre des bits.
Pour cela, un simple décalage (Shift) est fait sur chaque ligne (Row) du bloc de données
On utilisera par la suite la matrice A représentant le bloc de données initial, ici on portera notre intérêt sur les indices des éléments.
A=A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16

Principe de la fonction

La modification opérée par ShiftRow est très simple à comprendre et très simple à mettre en oeuvre.
Elle effectue un décalage ligne par ligne. La première ligne étant décalée de 0, la seconde de 1 et ainsi de suite.
On peut le faire dans un programme informatique de plusieurs façons.
Si chaque élément, de gauche à droite et de haut en bas est noté de 1 à 16, alors on peut utiliser un tableau de correspondance.
[1,2,3,4,6,7,8,5,11,12,9,10,16,13,14,15][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
Cela permet facilement et directement de donner ses nouvelles coordonnées à chaque élément. Dans la partie application de ce site, ce même tableau fait la correspondance avant/après l'opération.
ex :
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A1A2A3A4A6A7A8A5A11A12A9A10A16A13A14A15

Réversibilité de ShiftRow

On peut voir rapidement qu'il est facile d'inverser ShiftRow.
Le tableau utilisé précédemment peut être utilisé dans les deux sens.
A1A2A3A4A6A7A8A5A11A12A9A10A16A13A14A15A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16