L'énoncé un peu simplifié : Le système est assez simple, puisqu’il consiste à traiter le texte par blocs de 128 bits, repré-
sentables sous la forme d’une matrice 4 × 4 bytes. Il y a donc principalement 3 entrées dans votre
programme : le texte, sous forme de vecteur de caractères, la clé et la longueur du texte en terme
de caractères. Chacun de ces bytes représente un caractère au format ASCII. Chaque bloc de texte
est traité itérativement 10 fois et de manière identique. Le traitement pour chaque itération sera
décrit dans la section suivante. Comme tout systèmes de chiffrement, vous avez besoin d’une clé.
Cette clé a également une taille de 128 bits et peut également être représentée sous la forme d’une
matrice de 4 × 4 bytes. Cette dernière reste la même pour chaque bloc à traiter.
Pour ce projet, nous vous proposons d’implanter le système de déchiffrement. Pour cela, tout
texte a une taille multiple de 16 en nombre de caractères. Comme dit plus haut, les caractères
sont du type ASCII. Tout caractère est donc vu comme un byte. Comme chaque bloc peut être
vu comme une matrice de 4 × 4 bytes, il peut être plus simple de considérer chaque ligne de la
matrice sous la forme d’une information de 32 bits, soit 4 caractères.
L’algorithme de déchiffrement : Pour déchiffrer le texte, il faut parcourir le vecteur de
caractères et le traiter par bloc de 16. Chacun des blocs de 16 caractères est traité comme une
matrice de 4 × 4 cases, où chaque case représente un byte. Chaque ligne fait donc 32 bits. La clé
a une taille de 128 bits et elle est aussi vue comme une matrice de 4 × 4 bytes. Pour rappel, il
n’existe pas de réels différences entre un entier et un caractère dans ce projet-ci (si ce n’est la taille
en bits). Pour chaque bloc, nous appliquons le traitement itératif suivant 10 fois :
– On va d’abord appliquer pour chaque ligne de la matrice du bloc à déchiffrer l’opération de
ou-exclusif (XOR) avec la ligne de clé correspondante (voir figure 1).
– Ensuite, nous allons appliquer une rotation paticulière à chaque ligne de la matrice à déchif-
frer (voir figure 2). Ces rotations sont les suivantes :
– une rotation de 8 bits vers la droite de la première ligne de 32 bits
– une rotation de 8 bits vers la gauche de la seconde ligne de 32 bits
– une rotation de 16 bits vers la gauche de la troisième ligne
– une rotation de 24 bits vers la gauche pour la quatrième ligne
– Une fois les opérations de XOR et de rotations effectuées, nous recommençons les étapes du
traitement décrit ci-dessus 9 fois (donc 10 fois en tout).
cipher DB 92, 113, 39, 117, 16, 25, 242, 174, 95, 210, 30, 158, 80, 1, 231, 179, 17, 35, 25, 48, 17, 15, 229, 174, 11, 158, 27, 219, 90, 6, 160, 181, 73, 119, 6, 48, 84, 15, 244, 235, 26, 205, 95, 219, 80, 30, 238, 168, 29, 112, 2, 38, 7, 92, 231, 224, 28, 209, 18, 220, 27, 83, 225, 178, 73, 98, 40, 60, 27, 234, 12, 158, 19, 153, 65, 83, 225, 180, 29, 111, 15, 48, 19, 9, 231, 174, 26, 204, 13, 219, 21, 83, 160, 230
en la première "matrice" de cette image:
Partager