Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Neoprávněný přístup k citlivým souborům je dnes běžným problémem. Abyste zajistili, že k obsahu vašich souborů budou mít přístup pouze osoby, kterým udělíte oprávnění, můžete je před přenosem zašifrovat.

Naučte se, jak zašifrovat soubor PDF pomocí Pythonu a jak jej dešifrovat zpět do původního stavu.

Nastavení prostředí

Chcete-li pokračovat, měli byste být obeznámeni s základy Pythonu.

Na terminálu Mac nebo rozhraní příkazového řádku Windows spusťte následující příkaz pro instalaci knihovny PyMuPDF:

pip nainstalovat PyMuPDF

Tato knihovna vám pomůže otevřít soubory PDF a manipulovat s nimi.

Po dokončení instalace PyMuPDF jste připraveni začít kódovat.

Úplný zdrojový kód je k dispozici v a úložiště GitHub.

Importujte modul Fitz

Importujte modul fitz knihovny PyMuPDF. To vám umožní volat a používat funkce, které podporuje.

import fitz

K otevírání, šifrování, dešifrování a ukládání souborů PDF použijete fitz.

instagram viewer

Zkontrolujte, zda je PDF zašifrováno

Vytvořte funkci, která zkontroluje, zda je PDF již zašifrováno a vrátí booleovskou hodnotu.

defpdf_is_encrypted(soubor):
pdf = fitz. dokument (soubor)
vrátit se pdf.isEncrypted

Tuto funkci použijete později, abyste programu pomohli automaticky rozhodnout, zda zašifrovat nebo dešifrovat vstupní PDF.

Šifrování PDF

Vytvořte funkci pro šifrování vstupního PDF. Funkce zkontroluje, zda je PDF již zašifrováno. Pokud není zašifrován, zašifruje jej pomocí algoritmu AES-256. Toto je nejsilnější šifrovací algoritmus, který fitz nabízí. Konečně to uloží zašifrované PDF.

defencrypt_pdf_file(pdf, heslo, výstupní soubor, soubor):
-line pdf_is_encrypted (soubor):
trvalá = int(
# Zajistěte, aby každý s PDF
# k němu má přístup
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # umožňuje tisk
| fitz. PDF_PERM_COPY # umožňuje kopírování
| fitz. PDF_PERM_ANNOTATE # povoluje anotace
)

# Algoritmus eEncryption
encrypt_meth = fitz. PDF_ENCRYPT_AES_256

pdf.save (outfile, encryption=encrypt_meth, user_pw=heslo,
oprávnění=perm)

-li pdf.uložit:
tisk("PDF šifrováno")

Tato funkce uloží zašifrované PDF do cesty k souboru, kterou předáte v argumentu outfile.

Dešifrování zašifrovaného PDF

Vytvořte dešifrovací funkci. Tato funkce nejprve zkontroluje, zda je vstupní soubor zašifrován. Pokud je zašifrováno, vyzve uživatele k zadání hesla. Poté se pokusí otevřít PDF pomocí poskytnutého hesla. Pokud je heslo správné, fitz PDF dešifruje. Poté uloží obsah dešifrovaného PDF do jiného nechráněného souboru PDF.

defdecrypt_pdf(soubor):
-li pdf_is_encrypted (soubor):
heslo = vstup('Zadejte heslo pdf:')
pdf = fitz.open (soubor)

-li pdf.autenticate (heslo):
pdf.uložit('decrypted.pdf')

-li pdf.uložit:
tisk("PDF dešifrováno")
jiný:
tisk('Nesprávné heslo')

Tento kód uloží nechráněné PDF do vašeho aktuálního pracovního adresáře.

Dešifroval chráněný.pdf soubor a uložil jej jako dešifrovaný.pdf.

Řízení toku programu

Vytvořte hlavní funkci, která bude řídit tok vašeho programu. Uloží cestu vstupního PDF, zavolá funkci šifrování a dešifrování a předá vstupní parametry.

defhlavní():
# nahraďte cestu k souboru některou z těchto cest
# pdf, které má být zašifrováno nebo dešifrováno
soubor = 'sample.pdf'
pdf = fitz.open (soubor)
heslo = 'pass123'
encrypt_pdf_file (pdf, heslo, 'protected.pdf', soubor)
decrypt_pdf (pdf)

Chcete-li změnit název zašifrovaného souboru PDF, nahraďte „protected.pdf“ svým vlastním, přičemž nezapomeňte zachovat příponu „.pdf“.

Spuštění hlavní metody

Ujistěte se, že hlavní metoda běží jako první:

-li __jméno__ == '__hlavní__':
hlavní()

Tento kód kontroluje, zda je skript spuštěn jako hlavní program a ne jako importovaný modul. Pokud se jedná o hlavní program, volá hlavní funkci.

Rozvíjejte své dovednosti Python

Vytvoření programu pro šifrování/dešifrování PDF v Pythonu je zábavný, ale náročný projekt. Pomůže vám procvičit své dovednosti v Pythonu a zvládnout práci se soubory s tímto jazykem.

Chcete-li zlepšit své dovednosti, měli byste pracovat na více projektech Pythonu. To vám pomůže pracovat s více Python knihovnami a moduly. Python je velmi rozmanitý a můžete jej použít v mnoha oblastech k provádění různých úkolů.