Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

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.

instagram viewer

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_256

pdf.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.