Implémentation du chiffrement affine en Python

PythonBeginner
Pratiquer maintenant

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 :

  1. Ouvrez le fichier affine.py dans votre éditeur de texte.
  2. 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 text est None ou une chaîne de caractères vide. Dans ce cas, elle renvoie None.
  • Ensuite, la fonction définit les valeurs de a, b et m conformé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 affine y = (a * x + b) % m et ajoute le caractère chiffré à la chaîne encryption_text.
  • Si le caractère n'est pas une lettre anglaise de largeur moyenne, il est ajouté à la chaîne encryption_text sans modification.
  • Enfin, la fonction renvoie la chaîne encryption_text.
  1. 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.

  1. 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}")
  1. Enregistrez le fichier affine.py.
  2. Ouvrez un terminal ou une invite de commande, accédez au répertoire contenant le fichier affine.py et 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().

  1. Dans le fichier affine.py, remplacez le code existant à la fin du fichier (c'est-à-dire if __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 variable encryption_text.
  • Si encryption_text est None (ce qui signifie que le texte d'entrée était vide), il affiche un message d'erreur.
  • Sinon, il affiche le texte chiffré.
  1. Enregistrez le fichier affine.py.
  2. Ouvrez un terminal ou une invite de commande, accédez au répertoire contenant le fichier affine.py et exécutez la commande suivante :
python3 affine.py
  1. 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.

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