Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Chiffre de César
Il s'agit d'une méthode de chiffrement très ancienne dont Jules César aurait fait usage. C'est un chiffre symétrique.
Chiffre symétrique
Chiffre : ensemble de règles permettant de transformer un message de sa version lisible en une version illisible.
Chiffrer / Déchiffrer : Utiliser le chiffre dans un sens ou dans l'autre.
Clé : Paramètres de réglage du chiffre choisi.
Alice et Bob utilisent une technique de chiffrement / déchiffrement. Tous les deux utilisent la même clé K – K pour key. On parle alors de chiffrement symétrique.
Plutôt que de parler de A qui communique avec B, l'usage est de parler d'Alice qui communique avec Bob. On envisage parfois un espion essayant d'intercepter le message. En anglais espionnage = eavesdropping, ce qui conduit à l'usage de parler d'Eve, l'espionne.
Problème : Alice et Bob ont dû échanger cette clé et ils ont intérêt à en changer régulièrement.
Méthode
Pour le chiffrement, il s'agit de décaler les lettres de l'alphabet. Par exemple, on peut décaler de +3, ainsi
- le A devient D,
- le B devient E,
- …
- le W devient Z,
- le X devient A,
- le Y devient B,
- le Z devient C.
Pour le déchiffrement, il suffit de décaler dans l'autre sens.
À faire
Fonction shift_letter
Vous devez écrire en Python une fonction shift_letter(letter, n)
letterest un caractère,- si c'est une lettre majuscule de A à Z, sans accent, elle sera décalée
- sinon elle sera inchangée
nest l'amplitude du décalage, positif ou négatif, n'est pas limité,- la fonction renvoie le résultat du décalage (ou pas de décalage si pas une majuscule sans accent)
Vous pourrez utiliser les fonctions
ord(letter)qui pour un caractère donné renvoie son code entier,chr(code)qui pour un code entier donné renvoie le caractère correspondant,- le modulo
%car n'oubliez pas qu'après Z on revient à A, il y a une idée de cercle et dans ces cas là le modulo est souvent très utile.
Fonction cypher
Vous devez écrire en Python une fonction cypher(text, n)
textest la chaîne de caractère à chiffrer. De préférence, des majuscules et des caractères de ponctuation,nest l'amplitude du décalage, dans notre cas, c'est la clé du chiffrement,- renvoie le texte chiffré.
Fonction decypher
Vous devez écrire en Python une fonction decypher(crypted, n)
cryptedest la chaîne de caractère du texte chiffré,nest l'amplitude du décalage, dans notre cas, c'est la clé du chiffrement,- renvoie le texte déchiffré.
Test
Pour vérifier le bon fonctionnement :
# message de Alice à Bob
crypted = cypher("BOB, PENSE A ACHETER DES TOMATES.", 13)
print(crypted)
# réponse chiffrée de Bob
message_reponse = decypher("VY A L RA NINVG CYHF, W'NV CEVF QR YN FNYNQR.", 13)
print(message_reponse)
