Salut à tous,
Je suis nouveau sur le forum et dans le monde du C/C++. J'ai un petit programme à réaliser que je viens de faire mais il doit y avoir quelques petits problèmes car il ne fonctionne pas correctement donc si une ou des personnes pouvait m'aider, je les remercie d'avance.
Voici l'intitulé du programme:
Vous avez une équipe chargée de faire de l'intox qui a envoyé ces derniers jours beaucoup de messages concernant une attaque sur Saint-malo. Vous vous êtes débrouillé pour que votre ennemi trouve certains de ces messages et vous vous doutez donc que les deux messages chiffrés mesA et mesB que vous venez d'interceptez contiennement probablement les mots SAINT-MALO et ATTAQUE. Nous allons essayer de déchiffrer mesA et mesB.
Notons m le message constitué du mot SAINT-MALO et notons c1 la portion du message codé qui correspond à SAINT-MALO. En ce cas, le message codé est de la forme m^k(^ est un "ou exclusif"). Si vous effectuez un "ou exclusif" entre la portion du message chiffré et le mot SAINT-MALO, alors vous obtenez m^c1=m^m^k=k.
Cela veut dire que vous avez récupéré une portion de la clef. Vous pouvez alors vous en servir pour décoder la portion correspondante c2 de l'autre message: en calculant c2 (ou exclusif) k vous obtenez une partie de texte en clair dans le second texte à déchiffrer.
La seule inconnue dans l'histoire, c'est l'endroit ou SAINT-MALO va se trouver dans la phrase codée. Pour le trouver, il suffit de créer un tableau de N cases ne contenant que SAINT-MALO et de déplacer successivement d'une case la position de SAINT-MALO dans le tableau en calculant à chaque fois la portion de la clef k puis en l'utilisant sur le second message pour regarder si l'on obtient un morceau de texte compréhensible.
1)Créer un programme pour qu'il effectue les opérations décrites ci-dessus et affiche à chaque test la portion de phrase obtenue. Lorsqu'un test donnera un morceau de texte compréhensible, vous aurez, à cet endroit le texte en clair des deux messages ainsi qu'un morceau de la clef. Le faire tourner avec les mots SAINT-MALO et ATTAQUE pour déchiffrer en partie les deux messages.Utiliser ensuite votre intuition pour trouver des morceaux de texte en claire supplémentaires. Au final, en déduire les deux messages déchiffrés ainsi que la clef complète.
Voici le programme:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 50
void main(void)
{
int i,j,n;
char mesA[N]={98,120,97,98,97,112,22,115,31,120,55,56,36,48,39,54,84,33,48,51,77,99,112,123,125,96,24,123,118,116,118};
char mesB[N]={124,116,18,119,113,101,119,101,108,25,39,57,69,34,61,61,34,61,44,65,40,99,101,18,114,20,3,126,4,8,23};
char k[N];
char c1[N];
char m[N]="SAINT-MALO";
for(i=0;i<32;i++)
{
for(j=0;j<16;j++)
{
k[i+j]=m[i+j]^mesA[i+j];
c1[i+j]=k[i]^mesB[i];
}
printf("La clef secrete est:\n");
puts(k);
printf("Le message dechiffre est:\n");
puts(c1);
printf("\n");
}
}