Uautorisert tilgang til sensitive filer er et vanlig problem i dag. For å sikre at bare personene du autoriserer kan få tilgang til innholdet i filene dine, kan du kryptere dem før overføring.
Lær hvordan du krypterer en PDF-fil ved hjelp av Python, og hvordan du dekrypterer en tilbake til sin opprinnelige tilstand.
Sette opp miljøet
For å følge med, bør du være kjent med grunnleggende om Python.
På en Mac-terminal eller Windows-kommandolinjegrensesnitt, kjør følgende kommando for å installere PyMuPDF-biblioteket:
pip installer PyMuPDF
Dette biblioteket vil hjelpe deg med å åpne og manipulere PDF-filer.
Når du er ferdig med å installere PyMuPDF, er du klar til å begynne kodingen.
Den fullstendige kildekoden er tilgjengelig i en GitHub-depot.
Importer Fitz-modulen
Importer fitz-modulen til PyMuPDF-biblioteket. Dette vil gjøre deg i stand til å ringe og bruke funksjonene den støtter.
import fitz
Du vil bruke fitz til å åpne, kryptere, dekryptere og lagre PDF-ene.
Sjekk om PDF-en er kryptert
Opprett en funksjon som kontrollerer om PDF-filen allerede er kryptert og returnerer en boolsk verdi.
defpdf_er_kryptert(fil):
pdf = fitz. Dokument (fil)
komme tilbake pdf.iskryptert
Du vil bruke denne funksjonen senere for å hjelpe programmet automatisk å bestemme om det skal kryptere eller dekryptere PDF-inndata.
Krypterer PDF-en
Opprett en funksjon for å kryptere inndata-PDFen. Funksjonen vil sjekke om PDF-en allerede er kryptert. Hvis den ikke er kryptert, vil den kryptere den med AES-256-algoritmen. Dette er den sterkeste krypteringsalgoritmen som fitz tilbyr. Den vil endelig lagre den krypterte PDF-filen.
defkryptere_pdf_fil(pdf, passord, fil, fil):
hvisikke pdf_er_kryptert (fil):
perm = int(
# Sikre alle med PDF
# kan få tilgang til den
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # tillater utskrift
| fitz. PDF_PERM_COPY # tillater kopiering
| fitz. PDF_PERM_ANNOTA # tillater merknader
)# e-krypteringsalgoritme
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile, encryption=encrypt_meth, user_pw=password,
permissions=perm)
hvis pdf.save:
skrive ut("PDF kryptert")
Denne funksjonen lagrer den krypterte PDF-filen til filbanen du sender i utfilargumentet.
Dekryptering av den krypterte PDF-filen
Lag en dekrypteringsfunksjon. Denne funksjonen vil først sjekke om inndatafilen er kryptert. Hvis den er kryptert, vil den be brukeren om å skrive inn passordet. Den vil da prøve å åpne PDF-filen ved å bruke det angitte passordet. Hvis passordet er riktig, vil fitz dekryptere PDF-filen. Den vil deretter lagre innholdet i den dekrypterte PDF-filen til en annen ubeskyttet PDF-fil.
defdekryptere_pdf(fil):
hvis pdf_er_kryptert (fil):
passord = input('Skriv inn pdf-passord:')
pdf = fitz.open (fil)hvis pdf.authenticate (passord):
pdf.save('dekryptert.pdf')
hvis pdf.save:
skrive ut("PDF dekryptert")
ellers:
skrive ut('Feil passord')
Denne koden lagrer den ubeskyttede PDF-filen i din nåværende arbeidskatalog.
Den har dekryptert beskyttet.pdf fil og lagret den som dekryptert.pdf.
Kontrollere flyten av programmet
Lag en hovedfunksjon som vil kontrollere flyten av programmet ditt. Den vil lagre banen til PDF-inndata, kalle krypterings- og dekrypteringsfunksjonen, og sende inndataparameterne.
defhoved-():
# erstatte filbanen med enten den av
# pdf-en som skal krypteres eller dekrypteres
fil = 'eksempel.pdf'
pdf = fitz.open (fil)
passord = 'pass123'
encrypt_pdf_file (pdf, passord, 'beskyttet.pdf', fil)
dekryptere_pdf (pdf)
For å endre navnet på den krypterte PDF-filen, erstatt "protected.pdf" med din egen, og pass på å beholde filtypen ".pdf".
Kjører hovedmetoden
Sørg for at hovedmetoden kjøres først:
hvis __navn__ == '__hoved__':
hoved()
Denne koden sjekker om skriptet kjøres som hovedprogram og ikke en importert modul. Hvis det er hovedprogrammet, kaller det hovedfunksjonen.
Utvid dine Python-ferdigheter
Å lage et PDF-kryptering/dekrypteringsprogram i Python er et morsomt, men utfordrende prosjekt. Det hjelper deg med å øve Python-ferdighetene dine og mestre filhåndtering med språket.
For å fremme ferdighetene dine, bør du jobbe med flere Python-prosjekter. Dette vil hjelpe deg å samhandle med flere Python-biblioteker og -moduler. Python er veldig mangfoldig og du kan bruke den på mange områder for å utføre forskjellige oppgaver.