Bonjour, je dois faire un devoir sur la cryptanalyse mais je suis bloquer à la fin. On me demande de trouver toutes les permutations possibles d'une clé dont on connait les caractères et de les tester jusqu'a trouver celle qui nous fournit le bon message final (grace a un pattern donné et une autre fonction).
Pour les permutations j'ai reussi à faire une fonction potable mais comment dois je faire pour tester toute les valeurs?
Voici ce que j'ai fait pour l'instant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
char *permut(char*a,int l,int r)
{
    if (l==r)
        {return a;
        }
    else
    {
        int i;
        for(i=0;i<=r;i++)
        {
            swap((a+1),(a+i));
            permut(a,l+1,r);
            swap((a+1),(a+i));
            return a;
        }
    }
}
char *test_all_key_permutations(char *encmessage, char *pattern, char *key) {
int keylenght = strlen(key);
char tab = decrypt(encmessage,key);
while (search_pattern(pattern,tab)== (-1))
{
    key = permut(key,0,keylenght);
    tab = decrypt(encmessage,key);
}
return key;
}