====== 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. {{page>nsi:terminales:securite:chiffrement_symetrique_asymetrique#Chiffre symétrique}} ===== 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)%%'' * ''letter'' est un caractère, * si c'est une lettre majuscule de A à Z, sans accent, elle sera décalée * sinon elle sera inchangée * ''n'' est 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)%%'' * ''text'' est la chaîne de caractère à chiffrer. De préférence, des majuscules et des caractères de ponctuation, * ''n'' est 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)%%'' * ''crypted'' est la chaîne de caractère du texte chiffré, * ''n'' est 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)