Introduction
Dans ce projet, vous allez apprendre à implémenter l'algorithme de chiffrement affine en Python. Le chiffre affine est un type de chiffre de substitution qui combine les caractéristiques du chiffre de décalage et du chiffre multiplicateur. Il utilise une fonction cryptographique pour chiffrer une lettre par lettre, offrant ainsi un moyen simple mais efficace de chiffrer et de déchiffrer du texte.
👀 Aperçu
Exemple 1: welcome - > oclsaqc
Exemple 2: welcome - > oclsaqc
Exemple 3: Qrwe - > Qroc
Exemple 4: None - > None
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment implémenter la fonction de chiffrement affine en Python
- Comment tester la fonction de chiffrement affine avec des entrées d'exemple
- Comment chiffrer l'entrée de l'utilisateur à l'aide de la fonction de chiffrement affine
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre les principes de base du chiffre affine
- Implémenter l'algorithme de chiffrement affine en Python
- Chiffrer et déchiffrer du texte à l'aide de la fonction de chiffrement affine
- Tester la fonction de chiffrement affine avec diverses entrées
Implémentez la fonction de chiffrement affine
Dans cette étape, vous allez apprendre à implémenter la fonction de chiffrement affine en Python. Suivez les étapes ci-dessous pour terminer cette étape :
- Ouvrez le fichier
affine.pydans votre éditeur de texte. - Dans la fonction
affine_encryption(text), ajoutez le code suivant :
def affine_encryption(text: str) -> str:
if text is None or text == "":
return None
a = 5
b = 8
m = 26
encryption_text = ""
for char in text:
if "A" <= char <= "Z" or "a" <= char <= "z":
char = char.lower()
x = ord(char) - ord("a")
y = (a * x + b) % m
encryption_text += chr(y + ord("a"))
else:
encryption_text += char
return encryption_text
Explication :
- La fonction vérifie d'abord si l'entrée
textestNoneou une chaîne de caractères vide. Dans ce cas, elle renvoieNone. - Ensuite, la fonction définit les valeurs de
a,betmconformément à la formule de chiffrement affine. - Elle parcourt chaque caractère de l'entrée
text. - Si le caractère est une lettre anglaise de largeur moyenne (entre 'A' et 'Z', ou 'a' et 'z'), elle convertit le caractère en minuscules, calcule la valeur numérique correspondante
x, applique la formule de chiffrement affiney = (a * x + b) % met ajoute le caractère chiffré à la chaîneencryption_text. - Si le caractère n'est pas une lettre anglaise de largeur moyenne, il est ajouté à la chaîne
encryption_textsans modification. - Enfin, la fonction renvoie la chaîne
encryption_text.
- Enregistrez le fichier
affine.py.
Tester la fonction de chiffrement affine
Dans cette étape, vous allez tester la fonction affine_encryption() avec les entrées d'exemple fournies.
- Dans le fichier
affine.py, ajoutez le code suivant à la fin du fichier :
if __name__ == "__main__":
## Exemple 1
text = "welcome"
encryption_text = affine_encryption(text)
print(f"Exemple 1: {text} -> {encryption_text}")
## Exemple 2
text = " welcome"
encryption_text = affine_encryption(text)
print(f"Exemple 2: {text} -> {encryption_text}")
## Exemple 3
text = " Qrwe"
encryption_text = affine_encryption(text)
print(f"Exemple 3: {text} -> {encryption_text}")
## Exemple 4
text = None
encryption_text = affine_encryption(text)
print(f"Exemple 4: {text} -> {encryption_text}")
- Enregistrez le fichier
affine.py. - Ouvrez un terminal ou une invite de commande, accédez au répertoire contenant le fichier
affine.pyet exécutez la commande suivante :
python3 affine.py
Cela exécutera la fonction affine_encryption() avec les entrées d'exemple fournies et imprimera les résultats.
Vérifiez que la sortie correspond aux résultats attendus :
Exemple 1: welcome -> oclsaqc
Exemple 2: welcome -> oclsaqc
Exemple 3: Qrwe -> Qroc
Exemple 4: None -> None
Si la sortie correspond aux résultats attendus, votre fonction affine_encryption() fonctionne correctement.
Chiffrer l'entrée de l'utilisateur
Dans cette étape, vous allez modifier le fichier affine.py pour permettre à l'utilisateur d'entrer un texte et de le chiffrer à l'aide de la fonction affine_encryption().
- Dans le fichier
affine.py, remplacez le code existant à la fin du fichier (c'est-à-direif __name__ == "__main__":et la partie qui suit) par le code suivant :
if __name__ == "__main__":
text = input("Entrez le texte à chiffrer : ")
encryption_text = affine_encryption(text)
if encryption_text is None:
print("Erreur : Le texte d'entrée est vide.")
else:
print(f"Texte chiffré : {encryption_text}")
Explication :
- Le code invite l'utilisateur à entrer le texte à chiffrer.
- Il appelle ensuite la fonction
affine_encryption()avec l'entrée de l'utilisateur et stocke le résultat dans la variableencryption_text. - Si
encryption_textestNone(ce qui signifie que le texte d'entrée était vide), il affiche un message d'erreur. - Sinon, il affiche le texte chiffré.
- Enregistrez le fichier
affine.py. - Ouvrez un terminal ou une invite de commande, accédez au répertoire contenant le fichier
affine.pyet exécutez la commande suivante :
python3 affine.py
- Lorsque vous êtes invité, entrez un texte à chiffrer et observez la sortie.
Félicitations! Vous avez terminé l'implémentation de la fonction de chiffrement affine et l'avez testée avec diverses entrées.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



