Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Ongeoorloofde toegang tot gevoelige bestanden is tegenwoordig een veelvoorkomend probleem. Om ervoor te zorgen dat alleen de mensen die u machtigt toegang hebben tot de inhoud van uw bestanden, kunt u ze versleutelen voordat ze worden verzonden.

Leer hoe u een PDF-bestand versleutelt met behulp van Python en hoe u een PDF-bestand weer in de oorspronkelijke staat ontsleutelt.

De omgeving instellen

Om mee te volgen, moet u bekend zijn met de basisprincipes van Python.

Voer op een Mac-terminal of Windows-opdrachtregelinterface de volgende opdracht uit om de PyMuPDF-bibliotheek te installeren:

pip installeer PyMuPDF

Deze bibliotheek helpt u bij het openen en manipuleren van PDF-bestanden.

Wanneer u klaar bent met het installeren van PyMuPDF, bent u klaar om te beginnen met coderen.

De volledige broncode is beschikbaar in een GitHub-opslagplaats.

Importeer de Fitz-module

Importeer fitz-module van de PyMuPDF-bibliotheek. Hierdoor kunt u bellen en de functies gebruiken die het ondersteunt.

importeren fitz

U gebruikt fitz om de pdf's te openen, coderen, decoderen en op te slaan.

Controleer of de PDF is versleuteld

Maak een functie die controleert of de PDF al versleuteld is en een booleaanse waarde retourneert.

defpdf_is_versleuteld(bestand):
pdf = fitz. Document bestand)
opbrengst pdf.is gecodeerd

U zult deze functie later gebruiken om het programma te helpen automatisch te beslissen of de ingevoerde PDF moet worden versleuteld of ontsleuteld.

Het versleutelen van de pdf

Maak een functie om de invoer-PDF te coderen. De functie controleert of de PDF al versleuteld is. Als het niet is versleuteld, wordt het versleuteld met behulp van het AES-256-algoritme. Dit is het sterkste versleutelingsalgoritme dat fitz aanbiedt. Het zal eindelijk de gecodeerde PDF opslaan.

defversleutel_pdf_bestand(pdf, wachtwoord, outfile, bestand):
alsniet pdf_is_encrypted (bestand):
permanent = int(
# Zorg ervoor dat iedereen de pdf heeft
# heeft er toegang toe
fitz. PDF_PERM_TOEGANG
| fitz. PDF_PERM_PRINT # staat printen toe
| fitz. PDF_PERM_COPY # staat kopiëren toe
| fitz. PDF_PERM_ANNOTATE # staat annotaties toe
)

# eEncryption-algoritme
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (outfile, encryptie=encrypt_meth, user_pw=wachtwoord,
permissies=toestemming)

als pdf.opslaan:
afdrukken("PDF versleuteld")

Deze functie slaat de gecodeerde PDF op in het bestandspad dat u doorgeeft in het outfile-argument.

De gecodeerde PDF decoderen

Maak een decoderingsfunctie. Deze functie controleert eerst of het invoerbestand versleuteld is. Als het gecodeerd is, wordt de gebruiker gevraagd het wachtwoord in te voeren. Het zal dan proberen de pdf te openen met het opgegeven wachtwoord. Als het wachtwoord correct is, zal fitz de pdf decoderen. Vervolgens wordt de inhoud van de gedecodeerde PDF opgeslagen in een ander onbeveiligd PDF-bestand.

defdecoderen_pdf(bestand):
als pdf_is_encrypted (bestand):
wachtwoord = invoer('Voer pdf-wachtwoord in: ')
pdf = fitz.open (bestand)

als pdf.authenticate (wachtwoord):
pdf.bewaren('gedecodeerd.pdf')

als pdf.opslaan:
afdrukken("PDF gedecodeerd")
anders:
afdrukken('Incorrect wachtwoord')

Deze code slaat de onbeveiligde PDF op in uw huidige werkdirectory.

Het heeft het gedecodeerd beschermd.pdf bestand en sla het op als gedecodeerd.pdf.

Controle van de stroom van het programma

Maak een hoofdfunctie die de stroom van uw programma regelt. Het slaat het pad van de ingevoerde PDF op, roept de coderings- en decoderingsfunctie aan en geeft de invoerparameters door.

defvoornaamst():
# vervang het bestandspad door dat van
# de pdf die moet worden versleuteld of ontsleuteld
bestand = 'voorbeeld.pdf'
pdf = fitz.open (bestand)
wachtwoord = 'pass123'
encrypt_pdf_file (pdf, wachtwoord, 'beschermd.pdf', bestand)
decoderen_pdf (pdf)

Om de naam van het gecodeerde PDF-bestand te wijzigen, vervangt u "protected.pdf" door uw eigen naam en zorgt u ervoor dat u de extensie ".pdf" behoudt.

De hoofdmethode uitvoeren

Zorg ervoor dat de hoofdmethode eerst wordt uitgevoerd:

als __naam__ == '__voornaamst__':
voornaamst()

Deze code controleert of het script wordt uitgevoerd als het hoofdprogramma en niet als een geïmporteerde module. Als het het hoofdprogramma is, roept het de hoofdfunctie aan.

Verbeter je Python-vaardigheden

Het maken van een PDF-coderings-/decoderingsprogramma in Python is een leuk maar uitdagend project. Het helpt je bij het oefenen van je Python-vaardigheden en het omgaan met bestanden met de taal.

Om je vaardigheden te verbeteren, zou je aan meer Python-projecten moeten werken. Dit zal je helpen om te communiceren met meer Python-bibliotheken en -modules. Python is heel divers en je kunt het op veel gebieden toepassen om verschillende taken uit te voeren.