62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
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.
|