Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

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.

instagram viewer

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_256

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