Introduction
Dans ce projet, vous allez apprendre à implémenter l'algorithme de chiffrement de carré de Polybe. Le carré de Polybe est une grille 5x5 qui associe chaque lettre de l'alphabet anglais à une paire de coordonnées. En chiffrant le texte en utilisant cette méthode, vous pouvez créer un message codé qui ne peut être décrypté que par quelqu'un qui connaît le carré de Polybe.
👀 Aperçu
## Exemple 1
text = "tynam"; encryption_text = "4454331132"
## Exemple 2
text = "tynam123"; encryption_text = "4454331132123"
## Exemple 3
text = "TYnam"; encryption_text = "4454331132"
## Exemple 4
text = None; encryption_text = None
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment définir le carré de Polybe
- Comment supprimer les espaces et convertir le texte en minuscules
- Comment gérer une entrée vide ou
None - Comment chiffrer le texte à l'aide du carré de Polybe
- Comment renvoyer le texte chiffré
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre le concept de l'algorithme de chiffrement de carré de Polybe
- Implémenter l'algorithme de chiffrement de Polybe en Python
- Chiffrer et déchiffrer le texte à l'aide du carré de Polybe
- Gérer diverses scénarios d'entrée, y compris une entrée vide ou
None
Supprimer les espaces et convertir en minuscules
Dans cette étape, vous allez apprendre à préparer le texte d'entrée pour le chiffrement en supprimant les espaces et en convertissant tous les caractères en minuscules.
- Ouvrez le fichier
polybius.pydans votre éditeur de code. - Ajoutez le code suivant à la fonction
polybius_encryption():
## Supprimer les espaces et convertir en minuscules
text = text.replace(" ", "").lower()
Cela supprimera tous les espaces dans le texte d'entrée et convertira tous les caractères en minuscules.
Gérer les entrées vides ou nulles
Dans cette étape, vous allez apprendre à gérer le cas où le texte d'entrée est vide ou None.
- Ajoutez le code suivant au début de la fonction
polybius_encryption():
if text is None:
return None
if text == "":
return None
Cela garantira que la fonction renvoie None si le texte d'entrée est None ou une chaîne de caractères vide.
- Après avoir terminé cette étape, le code est le suivant :
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Supprimer les espaces et convertir en minuscules
text = text.replace(" ", "").lower()
if text == "":
return None
Configurer le carré de Polybe
Dans cette étape, vous allez apprendre à définir le carré de Polybe, qui est une grille 5x5 contenant les 26 lettres de l'alphabet anglais.
- Après les étapes précédentes, définissez le carré de Polybe comme une liste de listes, où chaque liste interne représente une ligne du carré :
polybius_square = [
["a", "b", "c", "d", "e"],
["f", "g", "h", "ij", "k"],
["l", "m", "n", "o", "p"],
["q", "r", "s", "t", "u"],
["v", "w", "x", "y", "z"],
]
Ce carré de Polybe sera utilisé pour associer les lettres du texte d'entrée à leurs coordonnées correspondantes.
Chiffrer le texte
Dans cette étape, vous allez apprendre à chiffrer le texte d'entrée à l'aide du carré de Polybe.
- Après les étapes précédentes, ajoutez le code suivant à la fonction
polybius_encryption():
encrypted_text = ""
for char in text:
if char.isalpha():
for i, row in enumerate(polybius_square):
for j, ch in enumerate(row):
if char in ch:
encrypted_text += str(i + 1) + str(j + 1)
else:
encrypted_text += char
Ce code parcourt chaque caractère du texte d'entrée. Si le caractère est une lettre, il trouve les coordonnées correspondantes dans le carré de Polybe et les ajoute à la chaîne encrypted_text. Si le caractère n'est pas une lettre, il est ajouté tel quel à la chaîne encrypted_text.
Retourner le texte chiffré
Dans cette dernière étape, vous allez apprendre à retourner le texte chiffré à partir de la fonction polybius_encryption().
- Ajoutez la ligne suivante à la fin de la fonction
polybius_encryption():
return encrypted_text
Cela retournera le texte chiffré en tant que sortie de la fonction.
Maintenant, la fonction polybius_encryption() complète devrait ressembler à ceci :
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Supprimer les espaces et convertir en minuscules
text = text.replace(" ", "").lower()
if text == "":
return None
## Définir le carré de Polybe
polybius_square = [
["a", "b", "c", "d", "e"],
["f", "g", "h", "ij", "k"],
["l", "m", "n", "o", "p"],
["q", "r", "s", "t", "u"],
["v", "w", "x", "y", "z"],
]
encrypted_text = ""
for char in text:
if char.isalpha():
for i, row in enumerate(polybius_square):
for j, ch in enumerate(row):
if char in ch:
encrypted_text += str(i + 1) + str(j + 1)
else:
encrypted_text += char
return encrypted_text
if __name__ == "__main__":
txt = input()
print(polybius_encryption(txt))
Vous avez maintenant terminé l'implémentation de l'algorithme de chiffrement de Polybe. Vous pouvez tester votre code en exécutant le fichier polybius.py et en fournissant un texte d'entrée à chiffrer.
- Exécutez le fichier
polybius.pyet fournissez un texte d'entrée à chiffrer.
python3 polybius.py
- Observez la sortie du texte chiffré.
## Exemple 1
text = "tynam"; encryption_text = "4454331132"
## Exemple 2
text = "tynam123"; encryption_text = "4454331132123"
## Exemple 3
text = "TYnam"; encryption_text = "4454331132"
## Exemple 4
text = None; encryption_text = None
Félicitations! Vous avez réussi à implémenter l'algorithme de chiffrement de Polybe en Python.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



