Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Uautoriseret adgang til følsomme filer er et almindeligt problem i dag. For at sikre, at kun de personer, du autoriserer, kan få adgang til indholdet af dine filer, kan du kryptere dem før transmission.

Lær, hvordan du krypterer en PDF-fil ved hjælp af Python, og hvordan du dekrypterer en tilbage til dens oprindelige tilstand.

Opsætning af miljøet

For at følge med, bør du være bekendt med det grundlæggende i Python.

På en Mac-terminal eller Windows-kommandolinjegrænseflade skal du køre følgende kommando for at installere PyMuPDF-biblioteket:

pip installer PyMuPDF

Dette bibliotek hjælper dig med at åbne og manipulere PDF-filer.

Når du er færdig med at installere PyMuPDF, er du klar til at begynde at kode.

Den fulde kildekode er tilgængelig i en GitHub-depot.

Importer Fitz-modulet

Importer fitz-modul af PyMuPDF-biblioteket. Dette vil give dig mulighed for at ringe og bruge de funktioner, den understøtter.

instagram viewer
importere fitz

Du vil bruge fitz til at åbne, kryptere, dekryptere og gemme PDF'erne.

Tjek, om PDF'en er krypteret

Opret en funktion, der kontrollerer, om PDF-filen allerede er krypteret og returnerer en boolesk værdi.

defpdf_er_krypteret(fil):
pdf = fitz. Dokument (fil)
Vend tilbage pdf.er Krypteret

Du vil bruge denne funktion senere til at hjælpe programmet med automatisk at beslutte, om det skal kryptere eller dekryptere PDF-inputtet.

Kryptering af PDF

Opret en funktion til at kryptere input PDF. Funktionen vil kontrollere, om PDF'en allerede er krypteret. Hvis det ikke er krypteret, vil det kryptere det vha AES-256 algoritmen. Dette er den stærkeste krypteringsalgoritme, som fitz tilbyder. Det vil endelig gemme den krypterede PDF.

defkryptere_pdf_fil(pdf, adgangskode, outfil, fil):
hvisikke pdf_er_krypteret (fil):
perm = int(
# Sørg for, at alle med PDF'en
# kan få adgang til det
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # tillader udskrivning
| fitz. PDF_PERM_COPY # tillader kopiering
| fitz. PDF_PERM_ANNOTA # tillader annoteringer
)

# e-krypteringsalgoritme
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

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

hvis pdf.gem:
Print("PDF krypteret")

Denne funktion gemmer den krypterede PDF til den filsti, du sender i outfile-argumentet.

Dekryptering af den krypterede PDF

Opret en dekrypteringsfunktion. Denne funktion vil først kontrollere, om inputfilen er krypteret. Hvis det er krypteret, vil det bede brugeren om at indtaste adgangskoden. Det vil derefter forsøge at åbne PDF'en ved hjælp af den medfølgende adgangskode. Hvis adgangskoden er korrekt, vil fitz dekryptere PDF-filen. Det vil derefter gemme indholdet af den dekrypterede PDF til en anden ubeskyttet PDF-fil.

defdekryptere_pdf(fil):
hvis pdf_er_krypteret (fil):
adgangskode = input('Indtast pdf-adgangskode:')
pdf = fitz.open (fil)

hvis pdf.authenticate (adgangskode):
pdf.save('dekrypteret.pdf')

hvis pdf.gem:
Print("PDF dekrypteret")
andet:
Print('Forkert kodeord')

Denne kode gemmer den ubeskyttede PDF i din nuværende arbejdsmappe.

Den har dekrypteret beskyttet.pdf fil og gemte den som dekrypteret.pdf.

Styring af programmets flow

Opret en hovedfunktion, der vil kontrollere flowet i dit program. Den gemmer stien til input-PDF'en, kalder krypterings- og dekrypteringsfunktionen og videregiver inputparametrene.

defvigtigste():
# erstatte filstien med enten den af
# pdf'en, der skal krypteres eller dekrypteres
fil = 'sample.pdf'
pdf = fitz.open (fil)
adgangskode = 'pass123'
kryptere_pdf_fil (pdf, adgangskode, 'beskyttet.pdf', fil)
dekryptere_pdf (pdf)

For at ændre navnet på den krypterede PDF-fil skal du erstatte "beskyttet.pdf" med din egen, og sørg for at beholde filtypenavnet ".pdf".

Kørsel af hovedmetoden

Sørg for, at hovedmetoden kører først:

hvis __navn__ == '__main__':
hoved()

Denne kode kontrollerer, om scriptet køres som hovedprogrammet og ikke et importeret modul. Hvis det er hovedprogrammet, kalder det hovedfunktionen.

Udvid dine Python-færdigheder

At lave et PDF-kryptering/dekrypteringsprogram i Python er et sjovt, men udfordrende projekt. Det hjælper dig med at øve dine Python-færdigheder og mestre filhåndtering med sproget.

For at fremme dine færdigheder bør du arbejde på flere Python-projekter. Dette vil hjælpe dig med at interagere med flere Python-biblioteker og -moduler. Python er meget forskelligartet, og du kan anvende det på mange områder til at udføre forskellige opgaver.