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; }
Partager