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.
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_256pdf.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ů.