Cryptographie avec python

Cryptographie avec python

La cryptographie, la science des chiffres, est rendue réelle avec l'aide du codage. Nous ne pouvons pas décider qu'un langage de programmation soit meilleur ou pire qu'un autre. Cependant, la sélection d'une bibliothèque de cryptographie appropriée fait toute la différence.

Python fournit des bibliothèques et des modules très sophistiqués pour le chiffrement et le déchiffrement des données. Certains d'entre eux sont la cryptographie, le hashlib, les crypts simples, etc. L'article démontre l'utilisation des pratiques cryptographiques modernes à Python à l'aide de la bibliothèque de cryptographie en illustrant comment crypter et déchiffrer les chaînes de texte et les fichiers.

Installation de la bibliothèque de cryptographie

La cryptographie est une bibliothèque de Python qui fournit diverses façons cryptographiques pour les utilisateurs; L'un d'eux est un cryptage et un décryptage des données faciles. Utilisez la commande suivante pour installer la bibliothèque de cryptographie.

Ubuntu @ Ubuntu: ~ $ pip install cryptographie

Cryptage de texte

Importation de Fernet

Après une installation réussie, le module Fernet est importé de la bibliothèque. La fonction assume la responsabilité du chiffrement ainsi que le décryptage des données. Pour cela, créez un fichier Python et importez le module Fernet de la bibliothèque de cryptographie comme suit:

de la cryptographie.Fernet Import Fernet

Clé de génération

Générez maintenant la clé d'authentification en définissant une fonction ou simplement en utilisant un générateur Fernet dans Python. Le Fernet.La fonction Generate_Key () générera une clé pour le cryptage et le déchiffrement. Ajoutez la ligne suivante au code:

>> key = Fernet.générer_key ()

Maintenant, la classe Fernet sera instanciée en utilisant la clé générée.

>> Fernet = Fernet (clé)

Cryptage de chaîne de texte

Le chiffrement du texte n'est plus qu'à quelques lignes de code. Ajoutez les lignes suivantes pour faire crypter votre texte.

>> message = "Ce texte sera crypté"
>> ECRYPTED_MESSAGE = FERNET.crypter (message.encoder())
>> print ('chaîne de texte originale:', message)
>> print ('Message après chiffrement:' Encrypted_Message)

L'exécution du code Python ci-dessus produit une chaîne indéchipiffable de caractères alphanumériques, comme indiqué ci-dessous. C'est la forme la plus simple de cryptage de chaîne de texte à l'aide de la bibliothèque de cryptographie à Python. Premièrement, il code la chaîne pour le crypter plus tard en utilisant la recette de cryptage de cryptographie.

Le décryptage de la chaîne de texte

Après le cryptage des chaînes via la méthode de cryptage Ferret, décryptez le texte à sa forme d'origine. Un décryptage réussi garantit que le destinataire peut décoder et accéder aux informations sans aucun problème.

Par conséquent, pour le décryptage en douceur, les modules Fernet rendent également une fonction de décryptage facile. L'ajout de ces deux lignes à votre fichier Python décryptera le même message à sa forme initiale en douceur.

Decrypted_Message = Fernet.Decrypt (Ecrypted_Message).décoder()
print ('String de texte décrypté:', Decrypted_Message)

Les lignes de code ci-dessus utilisent la même instance de Fernet qui utilise la clé enregistrée dans la mémoire du programme pour le déchiffrement. Le Fernet.La fonction decrypt () renvoie la chaîne codée après le déchiffrement tel qu'elle a été codée avant le cryptage. Maintenant, la fonction decode renvoie la chaîne codée à sa forme d'origine.

Cryptage de fichiers

Tout comme le cryptage de texte, importez le module Fernet pour le chiffrement des fichiers et la génération de clés. Importez le module Fernet de la bibliothèque de cryptographie.

de la cryptographie.Fernet Import Fernet

Génération de clés

Comme indiqué ci-dessus, utilisez la fonction de générateur de touches Fernet pour générer la clé. Même s'il s'agit d'une meilleure approche pour tester le chiffrement et le décryptage des textes courts, il n'est pas pratiquement utile, car il perd la clé en permanence après la cessation du programme. Par conséquent, il est recommandé de stocker la clé dans un fichier en toute sécurité afin qu'il puisse être lu et utilisé chaque fois que vous avez besoin.

Activez ceci en définissant une fonction de générateur de clés dans le code qui écrit la clé d'un fichier. Cela peut également être fait en stockant la touche Fernet dans un fichier texte. Générer la clé et la stocker dans un fichier pour une utilisation future.

>> key = Fernet.générer_key ()
>> avec Open ('KeyFile.Key ',' WB ') en tant que fichier clé:
fichier clé.Écrire (clé)

Ce code générera une chaîne alphanumérique aléatoire et la stockera dans le fichier clé.fichier clé.

Chiffrement

Utilisez la ligne de code suivante pour lire la clé déjà stockée pour le cryptage de fichiers.

>> avec Open ('KeyFile.Key ',' RB ') en tant que fichier de clé:
>> key = keyfile.lire()

Utilisation de la clé pour l'instance Fernet:

>> Fernet = Fernet (clé)

Ouvrez et lisez le fichier à crypter et crypter les données du fichier à l'aide du cryptage Fernet:

>> avec Open ('Liste.CSV ',' RB ') comme original_file:
original_data = original_file.lire()
>> crypted_data = Fernet.Encrypt (original_data)

Ouvrez maintenant le fichier en mode écriture et réécrivez les données cryptées:

>> avec Open ('Liste.CSV ',' WB ') As Encrypted_file:
crypted_file.écrire (Ecrypted_data)

L'exécution de code ci-dessus remplacera les données des fichiers d'origine par une majeure partie de chaînes alphanumériques.

Décriture du fichier

Utilisez à nouveau le module Fernet pour décrypter le fichier avec la même clé. Le code suivant lit d'abord les données du fichier crypté et la restaure à sa forme d'origine avec la fonction de décryptation.

>> Fernet = Fernet (clé)
>> avec Open ('Liste.CSV ',' RB ') AS ECRYPTED_FILE:
crypted_data = encrypted_file.lire()
>> Decrypted_data = Fernet.Decrypt (Ecrypted_data)
>> avec Open ('Liste.CSV ',' WB ') AS Decrypted_file:
Decrypted_file.écrire (decrypted_data)

Conclusion

La bibliothèque de cryptographie est l'une des nombreuses bibliothèques et modules que Python offre pour une communication et un chiffrement sécurisés. Le module Fernet de la bibliothèque fournit un générateur de clés intégré et fournit des fonctions de chiffrement et de décryptage pour une chaîne de données et de fichiers gros.