Implémentation du chiffrement de César

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce projet, vous allez apprendre à implémenter le chiffre de César, une technique de chiffrement simple et largement connue. Le chiffre de César utilise une méthode de substitution pour remplacer les caractères anglais d'un message par le caractère situé N positions plus loin ou plus tôt dans la séquence de l'alphabet.

👀 Aperçu

## Exemple 1
text = "python"; encryption_text = "ravjqp"
## Exemple 2
text = "pyThon"; encryption_text = "raVjqp"
## Exemple 3
text = "Python31"; encryption_text = "Ravjqp31"
## Exemple 4
text = None; encryption_text = None

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment configurer l'environnement du projet et créer les fichiers nécessaires
  • Comment implémenter la fonction de chiffrement de César pour décaler chaque caractère anglais d'une chaîne de 2 positions vers la droite
  • Comment gérer différents types d'entrée, y compris des caractères anglais, des caractères non anglais et des valeurs nulles
  • Comment tester la fonction de chiffrement de César avec divers exemples d'entrée

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre les principes de base de la technique de chiffrement du chiffre de César
  • Implémenter une fonction de chiffrement de César en Python sans utiliser aucune bibliothèque standard ou de tierce partie
  • Développer des compétences en manipulation de chaînes, en codage de caractères et en logique conditionnelle
  • Tester votre code pour vous assurer qu'il répond aux exigences du projet

Implémentez le chiffrement de César

Dans cette étape, vous allez implémenter la fonction de chiffrement de César.

  1. Ouvrez le fichier caesar_cipher.py.

  2. Modifiez la fonction caesar_encryption(text) pour obtenir la fonctionnalité souhaitée :

    • Entrez une chaîne de caractères et déplacez chaque caractère anglais de la chaîne de 2 positions vers la droite.
    • Convertissez uniquement les caractères anglais semi-anglais, laissez le reste inchangé.
    • La casse des caractères doit rester inchangée, par exemple, A sera converti en C et b sera converti en d.
  3. Remplacez le commentaire """TODO""" par le code suivant :

def caesar_encryption(text: str) -> str:
    if text is None:
        return None
    encryption_text = ""
    for char in text:
        if char.isalpha() and char.isascii():
            if char.islower():
                encryption_text += chr((ord(char) - ord("a") + 2) % 26 + ord("a"))
            else:
                encryption_text += chr((ord(char) - ord("A") + 2) % 26 + ord("A"))
        else:
            encryption_text += char
    return encryption_text

Ce code implémente l'algorithme de chiffrement de César tel que décrit dans les exigences du projet.

Testez le chiffrement de César

Dans cette étape, vous allez tester la fonction de chiffrement de César avec quelques entrées d'exemple.

  1. Ajoutez le code suivant à la fin du fichier caesar_cipher.py :
if __name__ == "__main__":
    test_input_text = input()
    print(caesar_encryption(test_input_text))
  1. Enregistrez le fichier caesar_cipher.py.
  2. Ouvrez un terminal et accédez au répertoire /home/labex/project.
  3. Exécutez le script caesar_cipher.py en utilisant la commande suivante :
python3 caesar_cipher.py
  1. Entrez du texte d'entrée de test et observez la sortie chiffrée.

Vérifiez les exigences

Dans cette étape, vous allez vérifier que votre implémentation répond aux exigences du projet.

  1. Revoyez les exigences du projet et assurez-vous que votre fonction caesar_encryption(text) :

    • Prend une chaîne de caractères en entrée et déplace chaque caractère anglais de la chaîne de 2 positions vers la droite.
    • Ne convertit que les caractères anglais demi-anglais, laissant le reste inchangé.
    • Conserve la casse des caractères, par exemple, A est converti en C et b est converti en d.
  2. Testez votre fonction avec les exemples de référence fournis :

## Exemple 1
text = "python"; encryption_text = "ravjqp"
## Exemple 2
text = "pyThon"; encryption_text = "raVjqp"
## Exemple 3
text = "Python31"; encryption_text = "Ravjqp31"
## Exemple 4
text = None; encryption_text = None
  1. Assurez-vous que votre fonction traite correctement tous les cas de test.

Félicitations! Vous avez terminé le projet du chiffre de César. Si vous avez des questions ou avez besoin d'aide supplémentaire, n'hésitez pas à demander.

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