Implémentation du chiffrement du code clair

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à implémenter un algorithme de chiffrement et de déchiffrement simple appelé "Chiffrement du Code Clair". Cette méthode de chiffrement a été utilisée dans le système de télégraphie chinoise précoce à la fin de la dynastie Qing.

👀 Aperçu

## Exemple 1
numb = 1530; encryption_text = "0383"
## Exemple 2
numb = 0; encryption_text = "9853"
## Exemple 3
numb = 12345; encryption_text = None

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment comprendre la méthode de chiffrement et ses principes de base
  • Comment implémenter la fonction plain_code_encryption(numb) pour effectuer le chiffrement
  • Comment tester la fonction de chiffrement avec diverses entrées
  • Comment gérer l'entrée de l'utilisateur et appeler la fonction de chiffrement

🏆 Réalisations

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

  • Expliquer la méthode de "Chiffrement du Code Clair" et son contexte historique
  • Implémenter un algorithme de chiffrement et de déchiffrement de base en utilisant Python
  • Tester et valider la fonction de chiffrement avec différents scénarios d'entrée
  • Intégrer l'entrée et la sortie de l'utilisateur dans le script de chiffrement

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/PythonStandardLibraryGroup -.-> python/math_random("Math and Random") subgraph Lab Skills python/numeric_types -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/strings -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/type_conversion -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/python_shell -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/conditional_statements -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/function_definition -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/arguments_return -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} python/math_random -.-> lab-302703{{"Implémentation du chiffrement du code clair"}} end

Comprendre la méthode de chiffrement

Dans cette étape, vous allez apprendre à connaître la méthode de chiffrement utilisée dans le projet "Chiffrement du Code Clair".

La méthode de chiffrement fonctionne comme suit :

  1. Les quatre chiffres du code clair sont respectivement additionnés aux quatre chiffres de la clé de chiffrement.
  2. Pour chaque addition de chiffre, si la somme est supérieure ou égale à 10, on omettra 10 et on ne gardera que le chiffre des unités.
  3. Lors du déchiffrement, on soustrait le mot de passe aux quatre chiffres de la clé de déchiffrement pour obtenir le code clair et trouver le texte correspondant.

Par exemple, disons que le code clair est 1530 et que la clé de chiffrement est 9853.

  1. Ajout du premier chiffre : 1 + 9 = 10, on considère 10 comme 0.
  2. Ajout du second chiffre : 5 + 8 = 13, on omettra 10 et on gardera 3.
  3. Ajout du troisième chiffre : 3 + 5 = 8.
  4. Ajout du quatrième chiffre (10 + 3 = 13, on omettra 10 et on gardera 3).

Le texte chiffré final est "0383".

Implémentez la fonction plain_code_encryption(numb)

Dans cette étape, vous allez implémenter la fonction plain_code_encryption(numb) dans le fichier plain_code.py.

  1. Ouvrez le fichier plain_code.py dans votre éditeur de code.

  2. Localisez la fonction plain_code_encryption(numb).

  3. Implémentez la fonction pour effectuer les tâches suivantes :

    • Entrez un nombre arbitraire compris entre 0 et 9999 (y compris 0 et 9999), ajoutez 9853 à celui-ci, et obtenez un nombre de 4 chiffres (au format str) après l'addition, puis renvoyez-le.
    • Si le nombre d'entrée est inférieur à 4 chiffres, complétez les positions manquantes avec 0. Par exemple, si le nombre d'entrée est 32, il doit être traité comme 0032.
    • Ajoutez les nombres dans la même position. Si la somme est supérieure ou égale à 10, omettez 10 et gardez seulement le chiffre des unités.
    • Si le nombre d'entrée n'est pas compris entre 0 et 9999, renvoyez None.

Voici le code complet de la fonction plain_code_encryption(numb) :

def plain_code_encryption(numb: int) -> str:
    if numb < 0 or numb > 9999:
        return None

    numb_str = str(numb).zfill(4)
    key_str = "9853"
    encryption_text = "".join(
        str((int(n) + int(k)) % 10) for n, k in zip(numb_str, key_str)
    )

    return encryption_text

Testez la fonction plain_code_encryption(numb)

Dans cette étape, vous allez tester la fonction plain_code_encryption(numb) avec les exemples fournis.

  1. Ouvrez le fichier plain_code.py dans votre éditeur de code.
  2. Ajoutez le code suivant à la fin du fichier :
if __name__ == "__main__":
    print(plain_code_encryption(1530))  ## Sortie : "0383"
    print(plain_code_encryption(0))     ## Sortie : "9853"
    print(plain_code_encryption(12345)) ## Sortie : None
  1. Enregistrez le fichier et exécutez le script en utilisant la commande python3 plain_code.py.
  2. Vérifiez que la sortie correspond aux résultats attendus.

Gérer l'entrée de l'utilisateur

Dans cette étape, vous allez modifier le script pour accepter l'entrée de l'utilisateur et appeler la fonction plain_code_encryption(numb) avec le nombre fourni par l'utilisateur.

  1. Ouvrez le fichier plain_code.py dans votre éditeur de code.
  2. Localisez le code que vous avez ajouté dans l'étape précédente et remplacez-le par le code suivant :
if __name__ == "__main__":
    txt = int(input())
    print(plain_code_encryption(txt))
  1. Enregistrez le fichier et exécutez le script en utilisant la commande python3 plain_code.py.
  2. Lorsque vous êtes invité, entrez un nombre compris entre 0 et 9999, et le script affichera le texte chiffré.

Félicitations! Vous avez terminé le projet "Chiffrement du Code Clair". Vous avez appris à implémenter la méthode de chiffrement et à la tester avec diverses entrées.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.