Exercices
Chapitre 4: Sécurisation des communications*
Pour réaliser ces exercices on peut utiliser le module string
de python.
# crée une chaîne de caractères avec l'alphabet
from string import ascii_uppercase as alphabet
print(alphabet) # affiche ABCDEFGHIJKLMNOPQRSTUVWXYZ
# accès aux caractères par l'index
alphabet[0], alphabet[25] # renvoie "A", "Z"
# recherche d'un caractère
alphabet.index("A"), alphabet.index("Z") # renvoie 0, 25
# Méthode str.upper pour mettre une chaîne de caractère en majuscules
"Message".upper() # renvoie "MESSAGE"
1 Implémenter des chiffrements symétriques en Python
-
Implémenter le chiffrement de César en créant une fonction
cesar
qui prend deux paramètres:message
une chaîne de caractères à (dé)coder.n
un entier qui donne le décalage.
Cette fonction doit convertir le message en majuscule, et décaler toutes les lettres de grâce au codage César, et laisser tous les autres caractères inchangés(ponctuation).
Voici une série de tests à passer.
assert cesar('message', 0) == "MESSAGE" assert cesar('message', 1) == 'NFTTBHF' assert cesar('message', -1) == 'LDRRZFD' assert cesar('message', 26) == 'MESSAGE' assert cesar('message', 53) == 'NFTTBHF' assert cesar('message', -27) == 'LDRRZFD' eluard = """Sur mes cahiers d’écolier Sur mon pupitre et les arbres Sur le sable sur la neige J’écris ton nom""" assert cesar(eluard, 13) == 'FHE ZRF PNUVREF Q’ÉPBYVRE\nFHE ZBA CHCVGER RG YRF NEOERF\nFHE YR FNOYR FHE YN ARVTR\nW’ÉPEVF GBA ABZ' # vérification du décodage assert cesar(cesar(eluard, 13), -13) == eluard.upper()
-
Implémenter le chiffrement par substitution avec une fonction
substitution
qui prend deux paramètres:message
une chaîne de caractères à (dé)coder.clé
une chaîne de caractères qui donne les correspondances des caractères. Par exemple:AZERTYUIOPQSDFGHJKLMWXCVBN
dans le cours.
On pourra vérifier son fonctionnement sur l’exemple du cours:
Comment devra être effectué le décodage à partir du message codé et de la clé?
-
Implémenter le chiffrement de Vigenère avec une fonction
vigenère
qui prend deux paramètres:message
une chaîne de caractères à (dé)coder.clé
une chaîne de caractères qui donne les décalages des caractères. Par exemple:ABC
dans le cours.
On pourra vérifier son fonctionnement sur l’exemple du cours:
Comment devra être effectué le décodage à partir du message codé et de la clé?