def chiffre_cesar(message:str, cle:int)->str: """ Chiffre un message avec le chiffrement par décalage sur les caractères imprimables ASCII. :param message: le message à chiffrer :param cle: décalage à appliquer :return: le message chiffré """ message_chiffre = "" for caractere in message: caractere_chiffre = chr((ord(caractere) - 32 + cle) % 95 + 32) message_chiffre += caractere_chiffre return message_chiffre def dechffre_cesar(message_chiffre:str, cle:int) -> str: """ Déchiffre un message chiffré avec la méthode César""" return chiffre_cesar(message_chiffre, -cle) # On souhaite casser ce chiffrement c'est à dire trouver la clé de chiffrement def signature(message: str) -> dict: """ Compte le nombre d'occurrences de chaque caractère""" # à compléter pass # Tests à ajouter def caractere_plus_courant(message:str) -> str: """ Donne le caractère le plus présent du message En cas d'égalité, on renverra un des plus présent """ assert len(message) > 0 # à compléter pass # Ajouter deux tests assert caractere_plus_courant("uiopyyy") == "y" def decalage(caractere:str) -> int: """ En supposant que caractere soit le caractère le plus présent du message, c'est certainement le caractère correspondant à l'espace. On peut donc calculer la clé""" # à compléter pass # Tests (ajouter deux tests) assert decalage("#") == 3 assert decalage("~") == 94 def trouve_cle(message_chiffre:str) -> int: """ À partir d'un message chiffré, retrouve la clé""" # à compléter pass def casse_cesar(message_chiffre:str) -> str: """ À partir d'un message chiffré, déchiffre le message""" # à compléter pass message = "Au théâtre, Victor Hugo s'est imposé comme un des chefs de file du romantisme français en présentant sa conception du drame romantique dans les préfaces qui introduisent Cromwell en 1827, puis Hernani en 1830, qui sont de véritables manifestes, puis par ses autres œuvres dramatiques, en particulier Lucrèce Borgia en 1833 et Ruy Blas en 1838." # Dans la suite, chiffrer ce message puis essayer de casser le chiffrement avec votre fonction.