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