Coder, chiffrer, dissimuler l’information avec Python

💻 Travail n° 1 Chiffrement de César

🕮 Apport de connaissances :

Le chiffrement de César est une méthode simple de chiffrement qui consiste à décaler les lettres de l’alphabet d’un certain nombre de positions. Par exemple, avec un décalage de 3, ‘a’ devient ‘D’, ‘b’ devient ‘E’, etc…​

Lorsque le décalage "dépasse" la fin de l’alphabet, on revient au début.

cesar.drawio
  • Par convention, en cryptologie, le texte en clair est écrit en minuscules et le texte chiffré est écrit en MAJUSCULES.

  • Ce type de chiffrement est appelé chiffrement par substitution : chaque lettre est remplacée par une autre.
    Il diffère d’un chiffrement par transposition dans lequel on modifie l’ordre des lettres.

Avec ce chiffrement utilisant un décalage de 3 caractères, le mot “defi” devient “GHIL”.

🎯 Travail à faire :

  1. Déterminer mentalement le résultat du chiffrement des mots suivants avec l’algorithme de César utilisant un décalage de 3 lettres :

    • “demain”

    • “chiffrement”

    • “code secret” (supprimer l’espace pour le codage)

  2. Coder un script Python qui permet le chiffrement d’une seule lettre de l’alphabet fournie par l’utilisateur avec l’algorithme de César s’appuyant sur un décalage de 3 lettres.

    • Les codes ASCII des lettres minuscules de l’alphabet se succèdent (‘a’→0x61=97, ‘b’→0x62=98 …​ ‘z’→0x7a=122).
      C’est aussi le cas des lettres majuscules (‘A’→0x41=65, ‘B’→0x42=66 …​ ‘Z’→0x5A=90)

    • En Python, le code ASCII d’un caractère peut être obtenu avec la fonction ord()

      print(f"ASCII('a') : {ord('a')}")
      // affiche : ASCII('a') : 97

      Inversement, le caractère correspondant à un code ASCII peut être obtenu avec la fonction chr()

      print(f"CHR(97) : {chr(97)}")
      // affiche : CHR(97) : a
    • L’alphabet comportant 26 lettres, on pourra utiliser l’opérateur modulo (→ %) pour gérer le cas des lettres ‘x’, ‘y’, 'z' qui, une fois chiffrées, donnent 'A', 'B', 'C'

  3. Faire évoluer le code pour qu’il permette de chiffrer avec l’algorithme de César — toujours avec décalage de 3 lettres — un texte (c’est-à-dire plusieurs mots) saisi par l’utilisateur.

    Ce script devra :

    • supprimer les espaces du texte en clair avant de le chiffrer

    • convertir en minuscules le texte avant de le chiffrer

    • comporter une fonction chiffrer_cesar(texte_clair) qui retourne chiffré (en majuscules) le texte fourni en argument

    • afficher le texte en clair et sa correspondance chiffrée.

    • On peut supprimer les espaces d’une chaine de caractères avec la méthode replace()

      str = ' Python est un langage très facile '
      print(str.replace(" ", ""))
      // Affiche : Pythonestunlangagetrèsfacile
    • Les méthodes lower() et upper() permettent respectivement de convertir en minuscules et en majuscules le texte auquel elles s’appliquent.

      str = "Hello WORLD" (1)
      print(f"majuscules -> {str.upper()}")
      print(f"minuscules -> {str.lower()}")
      // Affiche :
      // majuscules -> HELLO WORLD
      // minuscules -> hello world
      1 texte mélant minuscules et majuscules
  4. Faire évoluer le script pour que la fonction chiffrer_cesar() prenne un 2ème paramètre qui exprime le décalage désiré (valeur comprise entre 1 et 26).

💻 Travail n° 2 Déchiffrement de César

🎯 Travail à faire :

  1. Faire évoluer le script du travail précédent pour qu’il propose une fonction qui permet cette fois-ci de déchiffrer un message chiffré avec l’algorithme de César.

  2. Modifier le script pour qu’il trouve seul, par force brute, le texte en clair et le décalage utilisé pour le cryptogramme suivant : “VQHUQZEBAGDUZTGYQDOQEMDZAZBAGDXQXAGQDXQYMXCGQRAZFXQETAYYQEHUFMBDQEQGJXQNUQZQEFEAGHQZFQZFQDDQMHQOXQGDEAE”

    La méthode consiste à décoder le message avec les 26 décalages possibles jusqu’à obtenir un message compréhensible.

    Ce texte fait partie de l’oraison funèbre de Marc Antoine lors des funérailles de César ⇒ le mot “cesar” doit sûrement apparaitre dans le texte en clair.

💻 Travail n° 3 Base64

🕮 Apport de connaissances :

🎯 Travail à faire :

  1. Décoder le message suivant qui a été envoyé le 25 aôut 1991 à 22:57:08 sur

    SGVsbG8gZXZlcnlib2R5IG91dCB0aGVyZSB1c2luZyBtaW5peCAtICAKSSdtIGRvaW5nIGEgKGZyZWUpIG9wZXJhdGluZyBzeXN0ZW0gKGp1c3QgYSBob2JieSwgd29uJ3QgYmUgYmlnIGFuZCBwcm9mZXNzaW9uYWwgbGlrZSBnbnUpIGZvciAzODYoNDg2KSBBVCBjbG9uZXMuICAKVGhpcyBoYXMgYmVlbiBicmV3aW5nIHNpbmNlIEFwcmlsLCBhbmQgaXMgc3RhcnRpbmcgdG8gZ2V0IHJlYWR5LiAgCkknZCBsaWtlIGFueSBmZWVkYmFjayBvbiB0aGluZ3MgcGVvcGxlIGxpa2UvZGlzbGlrZSBpbiBtaW5peCwgYXMgbXkgT1MgcmVzZW1ibGVzIGl0IHNvbWV3aGF0Lg==

🞄  🞄  🞄