On cherche à crypter (on dit également chiffrer) un message en utilisant le code César qui consiste en un décalage de l'alphabet de $n$ lettres. Par exemple, un code $cesar$ avec un décalage de $+3$, implique que :
Indice | 1 | 2 | 3 | 4 | 5 | ... | 23 | 24 | 25 | 26 |
Alphabet | A | B | C | D | E | ... | W | X | Y | Z |
César + 3 | D | E | F | G | H | ... | Z | A | B | C |
Exercice 2.1
Ecrire un programme
On prendra soin de garder les espaces et la ponctuation.
On rappelle qu'il existe en Python une fonction
Exercice 2.2
Affichez pour les 26 possibilités de codage (décalage de 0 à 25) le chiffrement de la phrase "Bonjour jeunes programmeurs". On fera en sorte de transformer la chaîne initiale en majuscules. Vous devez obtenir le résultat suivant :
0 BONJOUR JEUNES PROGRAMMEURS
1 CPOKPVS KFVOFT QSPHSBNNFVST
2 DQPLQWT LGWPGU RTQITCOOGWTU
3 ERQMRXU MHXQHV SURJUDPPHXUV
4 FSRNSYV NIYRIW TVSKVEQQIYVW
5 GTSOTZW OJZSJX UWTLWFRRJZWX
6 HUTPUAX PKATKY VXUMXGSSKAXY
7 IVUQVBY QLBULZ WYVNYHTTLBYZ
8 JWVRWCZ RMCVMA XZWOZIUUMCZA
9 KXWSXDA SNDWNB YAXPAJVVNDAB
10 LYXTYEB TOEXOC ZBYQBKWWOEBC
11 MZYUZFC UPFYPD ACZRCLXXPFCD
12 NAZVAGD VQGZQE BDASDMYYQGDE
13 OBAWBHE WRHARF CEBTENZZRHEF
14 PCBXCIF XSIBSG DFCUFOAASIFG
15 QDCYDJG YTJCTH EGDVGPBBTJGH
16 REDZEKH ZUKDUI FHEWHQCCUKHI
17 SFEAFLI AVLEVJ GIFXIRDDVLIJ
18 TGFBGMJ BWMFWK HJGYJSEEWMJK
19 UHGCHNK CXNGXL IKHZKTFFXNKL
20 VIHDIOL DYOHYM JLIALUGGYOLM
21 WJIEJPM EZPIZN KMJBMVHHZPMN
22 XKJFKQN FAQJAO LNKCNWIIAQNO
23 YLKGLRO GBRKBP MOLDOXJJBROP
24 ZMLHMSP HCSLCQ NPMEPYKKCSPQ
25 ANMINTQ IDTMDR OQNFQZLLDTQR
Exercice 2.3
Trouvez quel est le décalage lié au message suivant : "KXWWN JWWNN !" en utilisant la
fonction
Dans le cas de Vigenère on part d'une matrice de 26 par 26 lettres comme par exemple la classique matrice :
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
B | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A |
C | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B |
D | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
E | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D |
F | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
G | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F |
H | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
I | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H |
J | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I |
K | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J |
L | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
M | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L |
N | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
O | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
P | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
Q | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
R | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q |
S | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |
T | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
U | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |
V | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
W | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V |
X | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W |
Y | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X |
Z | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
Cette matrice correspond pour A à un chiffrement César avec décalage de 0, pour B à un chiffrement César avec décalage de 1, ..., pour Z à un chiffrement César avec décalage de 25.
Pour chiffrer un message on utilise une clé de codage qui correspond à un mot, comme par exemple CODAGE.
Dès lors, pour coder une phrase, comme par exemple "LES FRANCAIS", on utilise le code César correspondant au parcours cyclique du mot clé CODAGE :
Lettre | Clé | Vigenère | L | C | N | E | O | S | S | D | V | F | A | F | R | G | X | A | E | E | N | C | P | C | O | Q | A | D | D | I | A | I | S | G | Y |
---|
Au final, on obtient le chiffrement "NSV FXEPQDIY" et pour rendre le chiffrement plus difficile à décoder on peut supprimer les espaces.
Exercice 2.4
Ajouter une fonction
On gardera les espaces et la ponctuation.
Exercice 2.5
A partir du message "les francais" et de la clé "CODAGE" essayez d'obtenir le message chiffré "NSV FXEPQDIY" en
faisant appel à la fonction
Exercice 2.6
A partir du message chiffré "KZ RMEKH HGI HCVL YPS CXXKHR YMNZR TTRSYXI DCHVPG R'BK", trouvez quelle clé a été utilisée pour chiffrer le message parmi les clés suivantes : "PYRAMYDE", "GNOU", "LINUX", "CONTE", "CRYPTO", "ZIDANE".
Il faudra probablement écrire une fonction
Exercice 2.7
Pour ceux qui ont encore du temps, chiffrer le fichier fichier_a_encoder.txt en utilisant la clé "VILLAGE" et afficher le résultat du chiffrement.