So verschlüsseln und entschlüsseln Sie PDF-Dateien mit Python

So verschlüsseln und entschlüsseln Sie PDF-Dateien mit Python

Unbefugter Zugriff auf vertrauliche Dateien ist heute ein häufiges Problem. Um sicherzustellen, dass nur die von Ihnen autorisierten Personen auf den Inhalt Ihrer Dateien zugreifen können, können Sie diese vor der Übertragung verschlüsseln.

Erfahren Sie, wie Sie eine PDF-Datei mit Python verschlüsseln und wieder in ihren ursprünglichen Zustand entschlüsseln.

Einrichten der Umgebung

Um mitzumachen, sollten Sie mit den Grundlagen von Python vertraut sein.

Führen Sie auf einem Mac-Terminal oder einer Windows-Befehlszeilenschnittstelle den folgenden Befehl aus, um die PyMuPDF-Bibliothek zu installieren:

pip install PyMuPDF

Diese Bibliothek hilft Ihnen beim Öffnen und Bearbeiten von PDF-Dateien.

Installation der PyMuPDF-Bibliothek auf dem Terminal einer IDE

Wenn Sie mit der Installation von PyMuPDF fertig sind, können Sie mit dem Codieren beginnen.

Importieren Sie das Fitz-Modul

Importieren Sie das Fitz-Modul der PyMuPDF-Bibliothek. Dadurch können Sie die unterstützten Funktionen aufrufen und verwenden.

import fitz

Sie werden Fitz verwenden, um die PDFs zu öffnen, zu verschlüsseln, zu entschlüsseln und zu speichern.

Überprüfen Sie, ob das PDF verschlüsselt ist

Erstellen Sie eine Funktion, die überprüft, ob das PDF bereits verschlüsselt ist und einen booleschen Wert zurückgibt.

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

Sie werden diese Funktion später verwenden, um dem Programm zu helfen, automatisch zu entscheiden, ob das Eingabe-PDF verschlüsselt oder entschlüsselt werden soll.

PDF verschlüsseln

Erstellen Sie eine Funktion zum Verschlüsseln der Eingabe-PDF. Die Funktion prüft, ob das PDF bereits verschlüsselt ist. Wenn es nicht verschlüsselt ist, wird es mit dem AES-256-Algorithmus verschlüsselt. Dies ist der stärkste Verschlüsselungsalgorithmus, den fitz anbietet. Es wird schließlich das verschlüsselte PDF speichern.

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")

Diese Funktion speichert die verschlüsselte PDF-Datei in dem Dateipfad, den Sie im outfile-Argument übergeben.

Ausgabe eines Programms, das eine verschlüsselte Datei im Explorer anzeigt

Entschlüsseln der verschlüsselten PDF

Erstellen Sie eine Entschlüsselungsfunktion. Diese Funktion prüft zunächst, ob die Eingabedatei verschlüsselt ist. Wenn es verschlüsselt ist, wird der Benutzer aufgefordert, das Passwort einzugeben. Es wird dann versuchen, das PDF mit dem angegebenen Passwort zu öffnen. Wenn das Passwort korrekt ist, entschlüsselt fitz das PDF. Anschließend wird der Inhalt der entschlüsselten PDF-Datei in einer anderen ungeschützten PDF-Datei gespeichert.

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')

Dieser Code speichert das ungeschützte PDF in Ihrem aktuellen Arbeitsverzeichnis.

Ausgabe eines Programms, das eine entschlüsselte Datei im Explorer zeigt

Der hat die Datei protected.pdf entschlüsselt und als decrypted.pdf gespeichert .

Steuerung des Programmflusses

Erstellen Sie eine Hauptfunktion, die den Ablauf Ihres Programms steuert. Es speichert den Pfad der Eingabe-PDF, ruft die Verschlüsselungs- und die Entschlüsselungsfunktion auf und übergibt die Eingabeparameter.

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)

Um den Namen der verschlüsselten PDF-Datei zu ändern, ersetzen Sie „protected.pdf“ durch Ihren eigenen und achten Sie darauf, die Erweiterung „.pdf“ beizubehalten.

Ausführen der Main-Methode

Stellen Sie sicher, dass die Hauptmethode zuerst ausgeführt wird:

if __name__ == '__main__':
    main()

Dieser Code prüft, ob das Skript als Hauptprogramm und nicht als importiertes Modul ausgeführt wird. Wenn es das Hauptprogramm ist, ruft es die Hauptfunktion auf.

Erweitern Sie Ihre Python-Fähigkeiten

Das Erstellen eines PDF-Verschlüsselungs-/Entschlüsselungsprogramms in Python ist ein lustiges, aber herausforderndes Projekt. Es hilft Ihnen, Ihre Python-Fähigkeiten zu üben und den Umgang mit Dateien mit der Sprache zu meistern.

Um Ihre Fähigkeiten zu erweitern, sollten Sie an mehr Python-Projekten arbeiten. Dies hilft Ihnen bei der Interaktion mit mehr Python-Bibliotheken und -Modulen. Python ist sehr vielfältig und Sie können es in vielen Bereichen einsetzen, um unterschiedliche Aufgaben zu erledigen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert