Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Neoprávnený prístup k citlivým súborom je dnes bežným problémom. Aby ste sa uistili, že k obsahu vašich súborov majú prístup iba osoby, ktorým dáte oprávnenie, môžete ich pred prenosom zašifrovať.

Zistite, ako zašifrovať súbor PDF pomocou Pythonu a ako ho dešifrovať späť do pôvodného stavu.

Nastavenie prostredia

Ak chcete pokračovať, mali by ste byť oboznámení s základy Pythonu.

Na termináli Mac alebo rozhraní príkazového riadka Windows spustite nasledujúci príkaz na inštaláciu knižnice PyMuPDF:

pip nainštalovať PyMuPDF

Táto knižnica vám pomôže otvárať a manipulovať so súbormi PDF.

Po dokončení inštalácie PyMuPDF ste pripravení začať s kódovaním.

Úplný zdrojový kód je dostupný v a úložisko GitHub.

Importujte modul Fitz

Importujte fitz modul knižnice PyMuPDF. To vám umožní volať a používať funkcie, ktoré podporuje.

importovať fitz

Na otváranie, šifrovanie, dešifrovanie a ukladanie súborov PDF použijete fitz.

instagram viewer

Skontrolujte, či je súbor PDF šifrovaný

Vytvorte funkciu, ktorá skontroluje, či je PDF už zašifrované a vráti boolovskú hodnotu.

defpdf_is_encrypted(súbor):
pdf = fitz. dokument (súbor)
vrátiť pdf.isEncrypted

Túto funkciu použijete neskôr, aby ste programu pomohli automaticky rozhodnúť, či má zašifrovať alebo dešifrovať vstupné PDF.

Šifrovanie PDF

Vytvorte funkciu na šifrovanie vstupného PDF. Funkcia skontroluje, či je PDF už zašifrované. Ak nie je zašifrovaný, zašifruje ho pomocou algoritmus AES-256. Toto je najsilnejší šifrovací algoritmus, ktorý Fitz ponúka. Nakoniec uloží zašifrované PDF.

defencrypt_pdf_file(pdf, heslo, výstupný súbor, súbor):
aknie pdf_is_encrypted (súbor):
perm = int(
# Zabezpečte všetkým s PDF
# má k nemu prístup
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # povoľuje tlač
| fitz. PDF_PERM_COPY # povoľuje kopírovanie
| fitz. PDF_PERM_ANNOTATE # povoľuje anotácie
)

# Algoritmus eEncryption
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (outfile, encryption=encrypt_meth, user_pw=heslo,
povolenia=perm)

ak pdf.uložiť:
vytlačiť ("PDF šifrované")

Táto funkcia uloží zašifrované PDF do cesty k súboru, ktorú zadáte v argumente výstupného súboru.

Dešifrovanie zašifrovaného PDF

Vytvorte dešifrovaciu funkciu. Táto funkcia najskôr skontroluje, či je vstupný súbor zašifrovaný. Ak je zašifrovaný, vyzve používateľa na zadanie hesla. Potom sa pokúsi otvoriť PDF pomocou poskytnutého hesla. Ak je heslo správne, Fitz dešifruje PDF. Potom uloží obsah dešifrovaného PDF do iného nechráneného súboru PDF.

defdecrypt_pdf(súbor):
ak pdf_is_encrypted (súbor):
heslo = vstup('Zadajte heslo pdf:')
pdf = fitz.open (súbor)

ak pdf.autenticate (heslo):
pdf.uložiť('decrypted.pdf')

ak pdf.uložiť:
vytlačiť ("PDF dešifrovaný")
inak:
vytlačiť ('Nesprávne heslo')

Tento kód uloží nechránené PDF do vášho aktuálneho pracovného adresára.

Používateľ dešifroval súbor chránený.pdf súbor a uložil ho ako dešifrované.pdf.

Riadenie toku programu

Vytvorte hlavnú funkciu, ktorá bude riadiť tok vášho programu. Uloží cestu vstupného PDF, zavolá funkciu šifrovania a dešifrovania a odovzdá vstupné parametre.

defHlavná():
# nahraďte cestu k súboru niektorou z nich
# pdf, ktoré sa má zašifrovať alebo dešifrovať
súbor = 'sample.pdf'
pdf = fitz.open (súbor)
heslo = 'pass123'
encrypt_pdf_file (pdf, heslo, 'protected.pdf', súbor)
decrypt_pdf (pdf)

Ak chcete zmeniť názov zašifrovaného súboru PDF, nahraďte „protected.pdf“ svojím vlastným, pričom nezabudnite zachovať príponu „.pdf“.

Spustenie hlavnej metódy

Uistite sa, že hlavná metóda beží ako prvá:

ak __meno__ == '__Hlavná__':
Hlavná()

Tento kód kontroluje, či je skript spustený ako hlavný program a nie ako importovaný modul. Ak je to hlavný program, volá hlavnú funkciu.

Rozšírte svoje zručnosti Python

Vytvorenie programu na šifrovanie/dešifrovanie PDF v Pythone je zábavný, ale náročný projekt. Pomôže vám precvičiť si zručnosti v jazyku Python a zvládnuť prácu so súbormi v tomto jazyku.

Ak chcete zlepšiť svoje zručnosti, mali by ste pracovať na viacerých projektoch Pythonu. To vám pomôže komunikovať s viacerými knižnicami a modulmi Pythonu. Python je veľmi rôznorodý a môžete ho použiť v mnohých oblastiach na vykonávanie rôznych úloh.