Neatļauta piekļuve sensitīviem failiem mūsdienās ir izplatīta problēma. Lai nodrošinātu, ka tikai jūsu pilnvarotās personas var piekļūt jūsu failu saturam, varat tos šifrēt pirms nosūtīšanas.
Uzziniet, kā šifrēt PDF failu, izmantojot Python, un kā to atšifrēt sākotnējā stāvoklī.
Vides iestatīšana
Lai sekotu līdzi, jums vajadzētu iepazīties ar Python pamati.
Mac terminālī vai Windows komandrindas saskarnē palaidiet šo komandu, lai instalētu PyMuPDF bibliotēku:
pip instalējiet PyMuPDF
Šī bibliotēka palīdzēs jums atvērt un apstrādāt PDF failus.
Kad esat pabeidzis PyMuPDF instalēšanu, esat gatavs sākt kodēšanu.
Pilns avota kods ir pieejams a GitHub repozitorijs.
Importējiet Fitz moduli
Importējiet PyMuPDF bibliotēkas fitz moduli. Tas ļaus jums zvanīt un izmantot atbalstītās funkcijas.
imports fitz
Jūs izmantosiet fitz, lai atvērtu, šifrētu, atšifrētu un saglabātu PDF failus.
Pārbaudiet, vai PDF fails ir šifrēts
Izveidojiet funkciju, kas pārbaudīs, vai PDF fails jau ir šifrēts, atgriežot Būla vērtību.
defpdf_is_šifrēts(fails):
pdf = fitz. Dokuments (fails)
atgriezties pdf.isEncrypted
Šo funkciju izmantosit vēlāk, lai palīdzētu programmai automātiski izlemt, vai šifrēt vai atšifrēt ievades PDF failu.
PDF faila šifrēšana
Izveidojiet funkciju, lai šifrētu ievades PDF. Funkcija pārbaudīs, vai PDF fails jau ir šifrēts. Ja tas nav šifrēts, tas šifrēs to, izmantojot AES-256 algoritms. Šis ir spēcīgākais fitz piedāvātais šifrēšanas algoritms. Tas beidzot saglabās šifrēto PDF failu.
defšifrēt_pdf_failu(pdf, parole, fails, fails):
janē pdf_is_encrypted (fails):
ilgviļņi = int(
# Pārliecinieties, ka visi ar PDF
# var tai piekļūt
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # atļauj drukāt
| fitz. PDF_PERM_COPY # atļauj kopēšanu
| fitz. PDF_PERM_ANNOTATE # atļauj anotācijas
)# e-šifrēšanas algoritms
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile, encryption=encrypt_meth, user_pw=password,
atļaujas=perm)
ja pdf.save:
drukāt ("PDF šifrēts")
Šī funkcija saglabā šifrēto PDF failu faila ceļā, kuru norādījāt argumentā Outfile.
Šifrētā PDF faila atšifrēšana
Izveidojiet atšifrēšanas funkciju. Šī funkcija vispirms pārbaudīs, vai ievades fails ir šifrēts. Ja tas ir šifrēts, tas liks lietotājam ievadīt paroli. Pēc tam tas mēģinās atvērt PDF failu, izmantojot norādīto paroli. Ja parole ir pareiza, fitz atšifrēs PDF failu. Pēc tam atšifrētā PDF faila saturs tiks saglabāts citā neaizsargātā PDF failā.
defatšifrēt_pdf(fails):
ja pdf_is_encrypted (fails):
parole = ievade ("Ievadiet pdf paroli:")
pdf = fitz.open (fails)ja pdf.authenticate (parole):
pdf.save("atšifrēts.pdf")
ja pdf.save:
drukāt ("PDF atšifrēts")
cits:
drukāt ('Nepareiza parole')
Šis kods saglabā neaizsargāto PDF failu jūsu pašreizējā darba direktorijā.
The ir atšifrējis aizsargāts.pdf failu un saglabāja to kā atšifrēts.pdf.
Programmas plūsmas kontrole
Izveidojiet galveno funkciju, kas kontrolēs jūsu programmas plūsmu. Tas saglabās ievades PDF ceļu, izsauks šifrēšanas un atšifrēšanas funkcijas un nodos ievades parametrus.
defgalvenais():
# aizstājiet faila ceļu ar kādu no
# pdf, kas jāšifrē vai jāatšifrē
fails = "sample.pdf"
pdf = fitz.open (fails)
parole = 'pass123'
encrypt_pdf_file (pdf, parole, 'protected.pdf', fails)
atšifrēt_pdf (pdf)
Lai mainītu šifrētā PDF faila nosaukumu, aizstājiet "protected.pdf" ar savu, saglabājot paplašinājumu ".pdf".
Galvenās metodes palaišana
Vispirms pārliecinieties, vai galvenā metode tiek palaista:
ja __nosaukums__ == '__galvenais__':
galvenais ()
Šis kods pārbauda, vai skripts tiek palaists kā galvenā programma, nevis importēts modulis. Ja tā ir galvenā programma, tā izsauc galveno funkciju.
Uzlabojiet savas Python prasmes
PDF šifrēšanas/atšifrēšanas programmas izveide programmā Python ir jautrs, bet izaicinošs projekts. Tas palīdz praktizēt savas Python prasmes un apgūt failu apstrādi ar valodu.
Lai uzlabotu savas prasmes, jums vajadzētu strādāt pie vairākiem Python projektiem. Tas palīdzēs jums mijiedarboties ar vairākām Python bibliotēkām un moduļiem. Python ir ļoti daudzveidīgs, un to var izmantot daudzās jomās, lai veiktu dažādus uzdevumus.