L'accès non autorisé à des fichiers sensibles est un problème courant aujourd'hui. Pour vous assurer que seules les personnes que vous autorisez peuvent accéder au contenu de vos fichiers, vous pouvez les chiffrer avant leur transmission.
Apprenez à chiffrer un fichier PDF à l'aide de Python et à en déchiffrer un dans son état d'origine.
Configuration de l'environnement
Pour suivre, vous devez être familiarisé avec le bases de Python.
Sur un terminal Mac ou une interface de ligne de commande Windows, exécutez la commande suivante pour installer la bibliothèque PyMuPDF :
pip installer PyMuPDF
Cette bibliothèque vous aidera à ouvrir et à manipuler des fichiers PDF.
Lorsque vous avez terminé l'installation de PyMuPDF, vous êtes prêt à commencer à coder.
Le code source complet est disponible dans un Référentiel GitHub.
Importer le module Fitz
Importer le module fitz de la bibliothèque PyMuPDF. Cela vous permettra d'appeler et d'utiliser les fonctions qu'il prend en charge.
importer Fitz
Vous utiliserez fitz pour ouvrir, chiffrer, déchiffrer et enregistrer les PDF.
Vérifiez si le PDF est crypté
Créez une fonction qui vérifiera si le PDF est déjà crypté en renvoyant une valeur booléenne.
définitivementpdf_is_encrypted(déposer):
pdf = fitz. Document (fichier)
retour pdf.isEncrypted
Vous utiliserez cette fonction plus tard pour aider le programme à décider automatiquement de chiffrer ou de déchiffrer le PDF d'entrée.
Cryptage du PDF
Créez une fonction pour crypter le PDF d'entrée. La fonction vérifiera si le PDF est déjà crypté. S'il n'est pas crypté, il le cryptera en utilisant l'algorithme AES-256. Il s'agit de l'algorithme de cryptage le plus puissant proposé par Fitz. Il enregistrera enfin le PDF crypté.
définitivementchiffrer_pdf_file(pdf, mot de passe, outfile, fichier):
sipas pdf_is_encrypted (fichier):
permanente = int(
# Assurer tout le monde avec le PDF
# peut y accéder
Fitz. PDF_PERM_ACCESSIBILITY
| Fitz. PDF_PERM_PRINT # autorise l'impression
| Fitz. PDF_PERM_COPY # autorise la copie
| Fitz. PDF_PERM_ANNOTATE # autorise les annotations
)# Algorithme de chiffrement électronique
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile, cryptage=encrypt_meth, user_pw=password,
permissions=perm)
si pdf.save :
imprimer("PDF crypté")
Cette fonction enregistre le PDF crypté dans le chemin de fichier que vous transmettez dans l'argument outfile.
Décryptage du PDF crypté
Créez une fonction de décryptage. Cette fonction vérifiera d'abord si le fichier d'entrée est crypté. S'il est crypté, il demandera à l'utilisateur d'entrer le mot de passe. Il essaiera alors d'ouvrir le PDF en utilisant le mot de passe fourni. Si le mot de passe est correct, fitz décryptera le PDF. Il enregistrera ensuite le contenu du PDF décrypté dans un autre fichier PDF non protégé.
définitivementdéchiffrer_pdf(déposer):
si pdf_is_encrypted (fichier):
mot de passe = entrée('Entrez le mot de passe pdf: ')
pdf = fitz.open (fichier)si pdf.authenticate (mot de passe):
pdf.save('déchiffré.pdf')
si pdf.save :
imprimer("PDF décrypté")
autre:
imprimer('Mot de passe incorrect')
Ce code enregistre le PDF non protégé dans votre répertoire de travail actuel.
L'a décrypté protégé.pdf fichier et l'a enregistré sous déchiffré.pdf.
Contrôler le déroulement du programme
Créez une fonction principale qui contrôlera le flux de votre programme. Il stockera le chemin du PDF d'entrée, appellera les fonctions de cryptage et de décryptage et transmettra les paramètres d'entrée.
définitivementprincipal():
# remplacer le chemin du fichier par celui de
# le pdf à chiffrer ou à déchiffrer
fichier = 'exemple.pdf'
pdf = fitz.open (fichier)
mot de passe = 'pass123'
encrypt_pdf_file (pdf, mot de passe, 'protected.pdf', déposer)
déchiffrer_pdf (pdf)
Pour changer le nom du fichier PDF crypté, remplacez "protected.pdf" par le vôtre en veillant à conserver l'extension ".pdf".
Exécution de la méthode principale
Assurez-vous que la méthode principale s'exécute en premier :
si __nom__ == '__principal__':
principal()
Ce code vérifie si le script est exécuté en tant que programme principal et non en tant que module importé. S'il s'agit du programme principal, il appelle la fonction principale.
Améliorez vos compétences Python
Créer un programme de chiffrement/déchiffrement PDF en Python est un projet amusant mais stimulant. Il vous aide à mettre en pratique vos compétences Python et à maîtriser la gestion des fichiers avec le langage.
Pour faire progresser vos compétences, vous devriez travailler sur plus de projets Python. Cela vous aidera à interagir avec plus de bibliothèques et de modules Python. Python est très diversifié et vous pouvez l'appliquer dans de nombreux domaines pour effectuer différentes tâches.