Accueil Technologie
Comment crypter et décrypter des fichiers PDF en utilisant Python

Comment crypter et décrypter des fichiers PDF en utilisant Python

L’accès non autorisé aux fichiers sensibles est un problème courant de nos jours. Pour vous assurer que seules les personnes que vous autorisez peuvent accéder au contenu de vos fichiers, vous pouvez les chiffrer avant de les transmettre.


Apprenez à crypter un fichier PDF à l’aide de Python, et à le décrypter pour retrouver son état d’origine.


Configuration de l’environnement

Pour suivre, vous devez être familier avec les bases de Python.

Dans un terminal Mac ou une interface de ligne de commande Windows, exécutez la commande suivante pour installer la bibliothèque PyMuPDF :

 pip install PyMuPDF 

Cette bibliothèque vous aidera à ouvrir et à manipuler les fichiers PDF.

Installation de la bibliothèque PyMuPDF sur le terminal d'un IDE

Lorsque vous avez terminé l’installation de PyMuPDF, vous êtes prêt à commencer à coder.

Le code source complet est disponible dans un dépôt GitHub.

Importez le module Fitz

Importez le module fitz de la bibliothèque PyMuPDF. Cela vous permettra d’appeler et d’utiliser les fonctions qu’il supporte.

 import fitz

Vous utiliserez fitz pour ouvrir, crypter, décrypter et sauvegarder les PDFs.

Vérifier si le PDF est crypté

Créez une fonction qui vérifiera si le PDF est déjà crypté en retournant une valeur booléenne.

 def pdf_is_encrypted(file):
    pdf = fitz.Document(file)
    return pdf.isEncrypted

Vous utiliserez cette fonction plus tard pour aider le programme à décider automatiquement s’il faut crypter ou décrypter 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é, elle le cryptera en utilisant l’algorithme AES-256. C’est l’algorithme de cryptage le plus fort que fitz offre. Enfin, le PDF crypté est sauvegardé.

 def encrypt_pdf_file(pdf, password, outfile, file):
    if not pdf_is_encrypted(file):
        perm = int(
            # Ensure everyone with the PDF
            # can access it
            fitz.PDF_PERM_ACCESSIBILITY
            | fitz.PDF_PERM_PRINT # permits printing
            | fitz.PDF_PERM_COPY # permits copying
            | fitz.PDF_PERM_ANNOTATE # permits annotations
        )

        # eEncryption algorithm
        encrypt_meth = fitz.PDF_ENCRYPT_AES_256

        pdf.save(outfile, encryption=encrypt_meth, user_pw=password,
                 permissions=perm)

        if pdf.save:
            print("PDF encrypted")

Cette fonction enregistre le PDF crypté dans le chemin de fichier que vous passez dans l’argument outfile.

Sortie d'un programme montrant un fichier crypté dans l'explorateur.

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é, elle demandera à l’utilisateur d’entrer le mot de passe. Elle essaiera ensuite d’ouvrir le PDF en utilisant le mot de passe fourni. Si le mot de passe est correct, fitz va décrypter le PDF. Il enregistre ensuite le contenu du PDF décrypté dans un autre fichier PDF non protégé.

 def decrypt_pdf(file):
    if pdf_is_encrypted(file):
        password = input('Enter pdf password : ')
        pdf = fitz.open(file)

        if pdf.authenticate(password):
            pdf.save('decrypted.pdf')

            if pdf.save:
                print("PDF decrypted")
        else:
            print('Incorrect Password')

Ce code enregistre le PDF non protégé dans votre répertoire de travail actuel.

sortie d'un programme montrant un fichier décrypté sur l'explorateur

Le a décrypté le protégé.pdf et l’a enregistré sous le nom de décrypté.pdf.

Contrôler le flux du programme

Créez une fonction principale qui contrôlera le flux de votre programme. Elle stockera le chemin du PDF d’entrée, appellera les fonctions d’encryptage et de décryptage, et passera les paramètres d’entrée.

 def main():
    # replace the file path with either that of
    # the pdf to be encrypted or decrypted
    file = 'sample.pdf'
    pdf = fitz.open(file)
    password = 'pass123'
    encrypt_pdf_file(pdf, password, 'protected.pdf', file)
    decrypt_pdf(pdf)

Pour changer le nom du fichier PDF crypté, remplacez « protected.pdf » par votre propre nom, 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 :

 if __name__ == '__main__':
    main()

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 en Python

La création d’un programme de cryptage/décryptage de PDF en Python est un projet amusant mais difficile. Il vous permet de mettre en pratique vos compétences en Python et de maîtriser la manipulation des fichiers avec ce langage.

Pour améliorer vos compétences, vous devriez travailler sur plus de projets Python. Cela vous aidera à interagir avec davantage 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.

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x