Cryptographie avec Python

💻 Travail n° 1 Chiffrement de César

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.

a b c d e f g h i j k l m …​ v w x y z

D

E

F

G

H

I

J

K

L

M

N

O

P

…​

Y

Z

A

B

C

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

🎯 Travail à faire :

  1. Donner le résultat du chiffrement du mot “demain” avec l’algorithme de César utilisant un décalage de 3 lettres

  2. Déterminer le code Python qui permet le chiffrement d’une lettre de l’alphabet avec l’algorithme de César utilisant un décalage de 3 lettres.

    • 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
    • Ce qui précède permet de déterminer que le rang d’une lettre minuscule <car> dans l’alphabet peut être obtenu avec ord(<car>) - ord('a') puisque les codes ASCII des lettres de l’alphabet se succèdent.

      print(f"RANG('c') : {ord('c') - ord('a')}")
      // affiche : RANG('c') : 2
    • 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. Coder un script Python qui permettra de chiffrer avec l’algorithme de César (décalage de 3 lettres) le texte saisi par l’utilisateur.

    Ce script devra :

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

    • convertir en minuscules le texte à chiffrer

    • comporter une fonction chiffrer_cesar(texte_clair).

    • Afficher le texte chiffré en MAJUSCULES

    • 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 un script 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 le texte en clair et le décalage utilisé pour le cryptogramme suivant : “VQHUQZEBAGDUZTGYQDOQEMDZAZBAGDXQXAGQDXQYMXCGQRAZFXQETAYYQEHUFMBDQEQGJXQNUQZQEFEAGHQZFQZFQDDQMHQOXQGDEAE”

    Indice : 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.

.

🞄  🞄  🞄