Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Nepooblaščen dostop do občutljivih datotek je danes pogosta težava. Če želite zagotoviti, da lahko samo osebe, ki jih pooblastite, dostopajo do vsebine vaših datotek, jih lahko pred prenosom šifrirate.

Naučite se šifrirati datoteko PDF s programom Python in kako jo dešifrirati nazaj v prvotno stanje.

Nastavitev okolja

Če želite slediti, morate poznati osnove Pythona.

Na terminalu Mac ali vmesniku ukazne vrstice Windows zaženite naslednji ukaz za namestitev knjižnice PyMuPDF:

pip namestite PyMuPDF

Ta knjižnica vam bo pomagala pri odpiranju in urejanju datotek PDF.

Ko končate z namestitvijo PyMuPDF, ste pripravljeni na začetek kodiranja.

Celotna izvorna koda je na voljo v a Repozitorij GitHub.

Uvozite modul Fitz

Uvozi modul fitz knjižnice PyMuPDF. To vam bo omogočilo klicanje in uporabo funkcij, ki jih podpira.

uvoz fitz

Fitz boste uporabljali za odpiranje, šifriranje, dešifriranje in shranjevanje datotek PDF.

instagram viewer

Preverite, ali je PDF šifriran

Ustvarite funkcijo, ki bo preverjala, ali je PDF že šifriran in vrača logično vrednost.

defpdf_is_encrypted(mapa):
pdf = primerno. Dokument (datoteka)
vrnitev pdf.isEncrypted

To funkcijo boste pozneje uporabili za pomoč programu pri samodejni odločitvi, ali naj šifrira ali dešifrira vhodni PDF.

Šifriranje PDF-ja

Ustvarite funkcijo za šifriranje vhodnega PDF-ja. Funkcija bo preverila, ali je PDF že šifriran. Če ni šifriran, ga bo šifriral z uporabo algoritem AES-256. To je najmočnejši algoritem šifriranja, ki ga ponuja Fitz. Končno bo shranil šifrirani PDF.

defencrypt_pdf_file(pdf, geslo, izhodna datoteka, datoteka):
čene pdf_is_encrypted (datoteka):
perm = int(
# Zagotovite, da imajo vsi PDF
# ima dostop do njega
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # dovoljuje tiskanje
| fitz. PDF_PERM_COPY # dovoljuje kopiranje
| fitz. PDF_PERM_ANNOTATE # dovoljuje opombe
)

# eEncryption algoritem
encrypt_meth = ustreza. PDF_ENCRYPT_AES_256

pdf.save (outfile, encryption=encrypt_meth, user_pw=password,
dovoljenja=dovoljenje)

če pdf.save:
natisni("PDF šifriran")

Ta funkcija shrani šifrirani PDF na pot datoteke, ki jo posredujete v argumentu outfile.

Dešifriranje šifriranega PDF-ja

Ustvarite funkcijo dešifriranja. Ta funkcija bo najprej preverila, ali je vhodna datoteka šifrirana. Če je šifrirano, bo uporabnika pozvalo k vnosu gesla. Nato bo poskusil odpreti PDF s podanim geslom. Če je geslo pravilno, bo Fitz dešifriral PDF. Nato bo vsebino dešifriranega PDF-ja shranil v drugo nezaščiteno datoteko PDF.

defdecrypt_pdf(mapa):
če pdf_is_encrypted (datoteka):
geslo = vnos('Vnesite geslo za pdf:')
pdf = fitz.open (datoteka)

če pdf.authenticate (geslo):
pdf.save('dešifrirano.pdf')

če pdf.save:
natisni("PDF dešifriran")
drugače:
natisni('Napačno geslo')

Ta koda shrani nezaščiten PDF v vaš trenutni delovni imenik.

The je dešifriral zaščiteno.pdf datoteko in jo shranili kot dešifrirano.pdf.

Nadzor poteka programa

Ustvarite glavno funkcijo, ki bo nadzorovala potek vašega programa. Shranil bo pot vhodnega PDF-ja, poklical funkcijo šifriranja in dešifriranja ter posredoval vhodne parametre.

defglavni():
# zamenjajte pot datoteke s katero koli od
# pdf, ki ga želite šifrirati ali dešifrirati
datoteka = 'vzorec.pdf'
pdf = fitz.open (datoteka)
geslo = 'pass123'
encrypt_pdf_file (pdf, geslo, 'protected.pdf', mapa)
decrypt_pdf (pdf)

Če želite spremeniti ime šifrirane datoteke PDF, zamenjajte »protected.pdf« s svojim, pazite, da obdržite pripono ».pdf«.

Izvajanje glavne metode

Zagotovite, da se najprej zažene glavna metoda:

če __ime__ == '__glavni__':
glavni ()

Ta koda preveri, ali se skript izvaja kot glavni program in ne kot uvoženi modul. Če je glavni program, pokliče glavno funkcijo.

Napredujte svoje znanje Pythona

Ustvarjanje programa za šifriranje/dešifriranje PDF v Pythonu je zabaven, a zahteven projekt. Pomaga vam vaditi svoje znanje Pythona in obvladovati rokovanje z datotekami v tem jeziku.

Če želite izboljšati svoje sposobnosti, bi morali delati na več projektih Python. To vam bo pomagalo pri interakciji z več knjižnicami in moduli Python. Python je zelo raznolik in ga lahko uporabite na številnih področjih za izvajanje različnih nalog.