Chiffrement du carré de Polybe en Python

PythonBeginner
Pratiquer maintenant

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.

  1. Ouvrez le fichier polybius.py dans votre éditeur de code.
  2. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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().

  1. 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.

  1. Exécutez le fichier polybius.py et fournissez un texte d'entrée à chiffrer.
python3 polybius.py
  1. 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.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer