Neovlašteni pristup osjetljivim datotekama danas je čest problem. Kako biste bili sigurni da samo osobe koje ovlastite mogu pristupiti sadržaju vaših datoteka, možete ih šifrirati prije prijenosa.
Naučite kako šifrirati PDF datoteku pomoću Pythona i kako je dešifrirati natrag u izvorno stanje.
Postavljanje okoline
Da biste slijedili, trebali biste biti upoznati s osnove Pythona.
Na Mac terminalu ili sučelju Windows naredbenog retka, pokrenite sljedeću naredbu za instaliranje biblioteke PyMuPDF:
pip instalirajte PyMuPDF
Ova biblioteka će vam pomoći u otvaranju i rukovanju PDF datotekama.
Kada završite s instaliranjem PyMuPDF-a, spremni ste za početak kodiranja.
Puni izvorni kod dostupan je u a GitHub spremište.
Uvezite Fitz modul
Uvezite fitz modul biblioteke PyMuPDF. To će vam omogućiti pozivanje i korištenje funkcija koje podržava.
uvoz fitz
Koristit ćete fitz za otvaranje, šifriranje, dešifriranje i spremanje PDF-ova.
Provjerite je li PDF šifriran
Napravite funkciju koja će provjeravati je li PDF već šifriran vraćajući Booleovu vrijednost.
defpdf_je_kriptiran(datoteka):
pdf = odgovara. Dokument (datoteka)
povratak pdf.isEncrypted
Kasnije ćete koristiti ovu funkciju kako biste pomogli programu da automatski odluči hoće li šifrirati ili dešifrirati ulazni PDF.
Šifriranje PDF-a
Stvorite funkciju za šifriranje ulaznog PDF-a. Funkcija će provjeriti je li PDF već šifriran. Ako nije šifriran, šifrirat će ga pomoću algoritam AES-256. Ovo je najjači algoritam šifriranja koji fitz nudi. Napokon će spremiti šifrirani PDF.
defšifriranje_pdf_datoteke(pdf, lozinka, izlazna datoteka, datoteka):
akone pdf_is_encrypted (datoteka):
perm = int(
# Osigurajte da svi imaju PDF
# mu može pristupiti
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_ISPIS # dopušta ispis
| fitz. PDF_PERM_COPY # dopušta kopiranje
| fitz. PDF_PERM_ANNOTATE # dopušta bilješke
)# eEnkripcijski algoritam
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile, encryption=encrypt_meth, user_pw=password,
dozvole=perm)
ako pdf.save:
ispis("PDF šifriran")
Ova funkcija sprema šifrirani PDF na put datoteke koji proslijedite u argumentu outfile.
Dešifriranje šifriranog PDF-a
Stvorite funkciju dešifriranja. Ova funkcija će prvo provjeriti je li ulazna datoteka šifrirana. Ako je šifrirana, od korisnika će se tražiti da unese lozinku. Zatim će pokušati otvoriti PDF pomoću navedene lozinke. Ako je lozinka točna, Fitz će dešifrirati PDF. Zatim će spremiti sadržaj dekriptiranog PDF-a u drugu nezaštićenu PDF datoteku.
defdekriptirati_pdf(datoteka):
ako pdf_is_encrypted (datoteka):
lozinka = unos('Unesite lozinku za pdf:')
pdf = fitz.open (datoteka)ako pdf.authenticate (lozinka):
pdf.save('dekriptirano.pdf')
ako pdf.save:
ispis("PDF dešifriran")
drugo:
ispis('Netočna lozinka')
Ovaj kod sprema nezaštićeni PDF u vaš trenutni radni direktorij.
The je dešifrirao zaštićeno.pdf datoteku i spremili je kao dešifrirano.pdf.
Kontrola tijeka programa
Napravite glavnu funkciju koja će kontrolirati tijek vašeg programa. Pohranit će putanju ulaznog PDF-a, pozvati funkciju šifriranja i dekriptiranja i proslijediti ulazne parametre.
defglavni():
# zamijenite putanju datoteke bilo kojom od
# pdf koji treba šifrirati ili dešifrirati
datoteka = 'uzorak.pdf'
pdf = fitz.open (datoteka)
lozinka = 'pass123'
encrypt_pdf_file (pdf, lozinka, 'protected.pdf', datoteka)
decrypt_pdf (pdf)
Da biste promijenili naziv šifrirane PDF datoteke, zamijenite "protected.pdf" svojim vlastitim, pazeći da zadržite nastavak ".pdf".
Izvođenje glavne metode
Provjerite izvodi li se glavna metoda prva:
ako __ime__ == '__glavni__':
glavni()
Ovaj kod provjerava izvodi li se skripta kao glavni program, a ne kao uvezeni modul. Ako je to glavni program, on poziva glavnu funkciju.
Unaprijedite svoje vještine Pythona
Stvaranje programa za enkripciju/dešifriranje PDF-a u Pythonu zabavan je, ali i izazovan projekt. Pomaže vam uvježbati svoje vještine Pythona i svladati rukovanje datotekama s jezikom.
Da biste unaprijedili svoje vještine, trebali biste raditi na više Python projekata. To će vam pomoći u interakciji s više Python biblioteka i modula. Python je vrlo raznolik i možete ga primijeniti u mnogim područjima za obavljanje različitih zadataka.