Chiffrement de chiffrement affine à l'aide de Python

Chiffrement De Chiffrement Affine A L Aide De Python



Sujet du contenu :

  1. Introduction
  2. Connaissances préalables
  3. Équation de chiffrement affine
  4. Chiffrement de chiffrement affine à l'aide de Python
  5. Preuve de concept
  6. Conclusion
  7. Foire aux questions (FAQ)

Le chiffre affine représente un type spécifique de chiffre de substitution, entrant dans la catégorie des chiffrements monoalphabétiques. Contrairement au plus célèbre chiffre de César, qui décale chaque lettre en clair d'un nombre fixe de trois positions, le chiffre Affine utilise deux clés (a et b). Le choix des clés doit nécessiter une attention particulière.

Connaissances préalables

Afin de comprendre en profondeur le sujet d’aujourd’hui, vous devez comprendre les concepts suivants :







  • Le plus grand diviseur commun (PGCD) et le nombre co-premier
  • Arithmétique modulaire

Ces concepts sont expliqués en détail dans l’article précédent intitulé « Approche mathématique du chiffrement affine ».



Équation de chiffrement affine

Commençons par la formule du chiffrement affine :



E(x) = (a.x + b) mod m
Ancien) Désigne un cryptage de l'index alphabétique x
un Une valeur d'index de la première clé « spéciale »
X Une valeur d'index de la lettre simple
b Une valeur d'index de la deuxième clé (valeur de décalage supplémentaire)
mod m Les opérations modulo du montant total de l'alphabet qui est de 26


Image alternative et légende : Équation de chiffrement affine





Par exemple, nous souhaitons chiffrer le texte clair « BIMANDO » avec les clés 7 et 13. À l'aide de l'index de table suivant, nous convertissons d'abord le texte brut en son numéro correspondant :


Image alternative et légende : Numérotation des index



Le texte en clair « BIMANDO » est converti en un numéro d'indexation en « 1 8 12 0 13 3 14 ».


Image alternative et légende : Convertir un texte brut en une valeur de numérotation d'index

Ensuite, nous appliquons le calcul de l’équation et le résultat s’affiche comme suit :


Image alternative et légende : Chiffrement Affine

Ainsi, le texte clair « BIMANDO » est crypté à l’aide du chiffre Affine avec les clés 7 et 13, ce qui donne « URTNAIH ».

Chiffrement de chiffrement affine à l'aide de Python

Maintenant, disons que nous souhaitons envoyer un message confidentiel contenant plusieurs paragraphes. Effectuer un chiffrement de chiffrement affine avec le processus manuel demande beaucoup d'efforts et de temps, et présente de fortes chances d'erreur de calcul, n'est-ce pas ? Par conséquent, nous avons besoin d’un programme qui automatise le processus de cryptage Affine Cipher. Voici le processus étape par étape pour créer un programme Python :

1. Importez les bibliothèques requises
Notre programme commence par importer les modules nécessaires tels que argparse, string et os pour l'analyse des arguments de ligne de commande, les opérations sur les chaînes et les fonctionnalités liées au système d'exploitation, respectivement.

importer argparse
importer chaîne
importer toi

2. Définir le mappage alphabétique
Ensuite, nous définissons l’alphabet comme une chaîne de lettres anglaises minuscules. Ceci est utilisé pour mapper les caractères lors du processus de cryptage ultérieur.

alphabet = chaîne . ascii_minuscule

3. Fonction de cryptage par chiffre affine
C'est la fonction principale de notre programme. Il prend le texte saisi et deux clés, « a » et « b », et applique le chiffrement affine au texte, préservant ainsi la structure du texte.

déf affine_cipher_encryption ( texte , un , b ) :
texte_chiffré = ''
pour carboniser dans texte:
si carboniser. inférieur ( ) dans alphabet:
si carboniser. le souper ( ) :
texte_chiffré + = chr ( ( ( un * ( mot ( carboniser. inférieur ( ) ) - 97 ) + b ) % 26 ) + 65 )
autre :
texte_chiffré + = chr ( ( ( un * ( mot ( carboniser ) - 97 ) + b ) % 26 ) + 97 )
autre :

4. Vérification principale conditionnelle
Dans ce code de bloc, vérifiez s’il est exécuté en tant que programme principal. Il configure l'analyseur d'arguments avec des descriptions du script et de ses arguments. L'argument requis est uniquement le chemin d'une entrée de fichier texte. Lorsque nous ne spécifions pas le chemin de sortie, nous voulons qu'il définisse par défaut le nom du fichier d'entrée avec « _encrypted » ajouté. Pour l’argument « clés », nous voulons qu’il soit formaté en « a,b ». Mais si nous le définissons, la valeur par défaut est 5 et 8.

si __nom__ == '__principal__' :
analyseur = argparse. ArgumentParser ( description = 'Cryptage affine à partir d'un fichier texte' )
analyseur . ajouter_argument ( 'fichier_entrée' , aide = 'Chemin d'accès au fichier texte d'entrée' )
analyseur . ajouter_argument ( '-k' , '--clés' , taper = str , défaut = '5,8' , aide = 'Clés pour le chiffre affine au format 'a,b'' )
arguments = analyseur . analyser_args ( )

un , b = carte ( int , arguments. clés . diviser ( ',' ) )

avec ouvrir ( arguments. fichier_entrée , 'r' ) comme déposer :
texte = déposer . lire ( )

# Extraire le nom du fichier du chemin du fichier d'entrée
nom_fichier_entrée , extension = toi . chemin . texte divisé ( arguments. fichier_entrée )
fichier_de_sortie_par défaut = nom_fichier_entrée + '_chiffré' + rallonge

# Chiffrer le texte en utilisant le chiffre affine
texte_chiffré = affine_cipher_encryption ( texte , un , b )

# Écrivez le texte crypté dans un nouveau fichier
avec ouvrir ( fichier_de_sortie_par défaut , 'Dans' ) comme déposer :
déposer . écrire ( texte_chiffré )

Enfin, une fois la fonction de cryptage terminée, notre programme enregistrera la sortie avec la même extension de fichier que le fichier d'entrée.

Maintenant, enregistrez-le dans « affine_cipher.py ». Maintenant, exécutez le programme en tapant la commande suivante :

python affine_cipher. py -h

Si vous ne trouvez aucune erreur, le résultat ressemble à l'image suivante :


Image alternative et légende : Programme Python de chiffrement affine

Preuve de concept

Nous avons un message confidentiel portant le nom « message.txt » suivant, et nous souhaitons le diffuser à nos membres :


Image alternative et légende : Texte brut

Nous utilisons donc le programme que nous avons créé avant de vouloir chiffrer ce message en utilisant le chiffrement Affine avec les clés 3 et 7. La commande est la suivante :

python affine_cipher. py message. SMS -k 3 , 7


Image alternative et légende : Programme Python de chiffrement affine

En un clin d’œil, le message crypté est créé avec succès et enregistré dans « message_encrypted.txt ». Vérifions à quoi ressemble le message :


Image alternative et légende : Texte chiffré affine

Comme vous pouvez le constater, le message est brouillé. Seuls nos membres connaissant la méthode de chiffrement et ses clés sont capables de décrypter le message.

Essayez-le vous-même

Téléchargez le code source de ce programme sur notre page GitHub à l'adresse https://github.com/bimando/Affine-Cipher .

Conclusion

En conclusion, la méthode de chiffrement Affine, une forme de chiffrement par substitution monoalphabétique, offre une sécurité renforcée grâce à l’utilisation de deux clés, exigeant une attention particulière lors de la sélection des clés. Comprendre des concepts tels que le plus grand diviseur commun (PGCD), les nombres premiers entre eux et l'arithmétique modulaire est essentiel pour comprendre les subtilités du chiffre affine.

L'équation de chiffrement affine, E(x) = (a.x + b) mod m, sert d'outil fondamental pour le cryptage où « a » et « b » représentent les clés et « x » symbolise l'index de la lettre en clair. Il a été démontré que la mise en œuvre d’un programme Python automatisé pour le processus de chiffrement de chiffrement Affine rationalise efficacement les tâches de chiffrement à grande échelle. Le programme intègre les fonctionnalités clés, notamment l'importation de bibliothèques, le mappage alphabétique, une fonction de cryptage et l'analyse des arguments de ligne de commande pour les chemins d'entrée et de sortie. Notamment, le script active les paramètres par défaut pour les clés et les noms de fichiers de sortie afin de faciliter un processus de cryptage transparent.

Foire aux questions (FAQ)

Q1 : Qu'est-ce que le chiffre Affine et en quoi diffère-t-il du chiffre César ?

A1 : Le chiffre affine est un type de chiffre de substitution monoalphabétique qui utilise deux clés, « a » et « b », pour le cryptage. En revanche, le chiffre César utilise un décalage fixe de trois positions pour chaque lettre du texte en clair.

Q2. Quels sont les prérequis pour comprendre le chiffre Affine ?

A2 : Pour bien comprendre le chiffre affine, il est essentiel de maîtriser des concepts tels que le plus grand diviseur commun (PGCD), les nombres co-premiers et l'arithmétique modulaire.

Q3 : Comment puis-je chiffrer un message à l’aide du chiffrement Affine en Python ?

A3 : Pour automatiser le processus de chiffrement Affine, vous pouvez utiliser le programme Python décrit dans l'article. Le programme crypte efficacement les entrées de texte à grande échelle, simplifiant ainsi la procédure de cryptage. L'article fournit des instructions étape par étape sur l'importation des bibliothèques, la définition du mappage alphabétique, la création de la fonction de chiffrement et l'analyse des arguments de ligne de commande pour les chemins d'entrée et de sortie.