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