Outils pour utilisateurs

Outils du site


nsi:tds:cryptographie:chiffre_cesar

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

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é KK 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.

2021/07/05 17:14 · goupillwiki

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)
nsi/tds/cryptographie/chiffre_cesar.txt · Dernière modification : de 193.51.53.161