Az érzékeny fájlokhoz való jogosulatlan hozzáférés manapság gyakori probléma. Annak érdekében, hogy csak az Ön által felhatalmazott személyek férhessenek hozzá a fájlok tartalmához, továbbítás előtt titkosíthatja azokat.
Ismerje meg, hogyan titkosíthat PDF fájlokat Python használatával, és hogyan lehet visszafejteni a titkosítást az eredeti állapotába.
A környezet beállítása
A követéshez ismernie kell a Python alapjai.
Mac terminálon vagy Windows parancssori felületen futtassa a következő parancsot a PyMuPDF könyvtár telepítéséhez:
pip telepítése PyMuPDF
Ez a könyvtár segít a PDF-fájlok megnyitásában és kezelésében.
Ha befejezte a PyMuPDF telepítését, készen áll a kódolás megkezdésére.
A teljes forráskód elérhető a GitHub adattár.
Importálja a Fitz modult
Importálja a PyMuPDF könyvtár fitz modulját. Ez lehetővé teszi az általa támogatott funkciók hívását és használatát.
import fitz
A PDF-ek megnyitásához, titkosításához, visszafejtéséhez és mentéséhez a fitz-et fogja használni.
Ellenőrizze, hogy a PDF titkosítva van-e
Hozzon létre egy függvényt, amely ellenőrzi, hogy a PDF már titkosítva van-e, és logikai értéket ad vissza.
defpdf_titkosított(fájl):
pdf = fitz. Dokumentum (fájl)
Visszatérés pdf.isEncrypted
Ezt a funkciót később arra fogja használni, hogy a program automatikusan eldöntse, titkosítja vagy visszafejti a bemeneti PDF-fájlt.
A PDF titkosítása
Hozzon létre egy függvényt a bemeneti PDF titkosításához. A funkció ellenőrzi, hogy a PDF már titkosítva van-e. Ha nincs titkosítva, akkor a segítségével titkosítja az AES-256 algoritmus. Ez a Fitz által kínált legerősebb titkosítási algoritmus. Végül elmenti a titkosított PDF-et.
defencrypt_pdf_file(pdf, jelszó, outfile, fájl):
hanem pdf_is_encrypted (fájl):
perm = int(
# Győződjön meg róla, hogy mindenki a PDF-el
# elérheti
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # nyomtatást engedélyez
| fitz. PDF_PERM_COPY # másolást engedélyez
| fitz. PDF_PERM_ANNOTATE # engedélyezi a megjegyzéseket
)# eEncryption algoritmus
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile, encryption=encrypt_meth, user_pw=password,
engedélyek=perm)
ha pdf.save:
nyomtatás("PDF titkosítva")
Ez a funkció a titkosított PDF-fájlt az outfile argumentumban megadott fájlútvonalra menti.
A titkosított PDF visszafejtése
Hozzon létre egy visszafejtő funkciót. Ez a funkció először ellenőrzi, hogy a bemeneti fájl titkosított-e. Ha titkosított, akkor a jelszó megadására kéri a felhasználót. Ezután megpróbálja megnyitni a PDF-fájlt a megadott jelszóval. Ha a jelszó helyes, a fitz visszafejti a PDF titkosítását. Ezután a visszafejtett PDF tartalmát egy másik, nem védett PDF-fájlba menti.
defdecrypt_pdf(fájl):
ha pdf_is_encrypted (fájl):
jelszó = input('Adja meg a pdf jelszót:')
pdf = fitz.open (fájl)ha pdf.authenticate (jelszó):
pdf.save("decrypted.pdf")
ha pdf.save:
nyomtatás("PDF visszafejtve")
más:
nyomtatás('Hibás jelszó')
Ez a kód a nem védett PDF-fájlt az aktuális munkakönyvtárba menti.
A visszafejtette a védett.pdf fájlt, és másként mentette el visszafejtve.pdf.
A program folyamatának szabályozása
Hozzon létre egy fő funkciót, amely szabályozza a program folyamát. Tárolja a bemeneti PDF elérési útját, meghívja a titkosítási és visszafejtési funkciókat, és átadja a bemeneti paramétereket.
deffő-():
# cserélje ki a fájl elérési útját a következőre:
# a titkosítandó vagy visszafejtendő pdf
fájl = "minta.pdf"
pdf = fitz.open (fájl)
jelszó = 'pass123'
encrypt_pdf_file (pdf, jelszó, 'protected.pdf', fájl)
decrypt_pdf (pdf)
A titkosított PDF-fájl nevének megváltoztatásához cserélje ki a "protected.pdf" fájlt a sajátjára, ügyelve arra, hogy a ".pdf" kiterjesztést megtartsa.
A fő módszer futtatása
Győződjön meg arról, hogy a fő módszer fut először:
ha __név__ == '__fő__':
fő()
Ez a kód ellenőrzi, hogy a szkript fő programként fut-e, és nem importált modulként. Ha ez a fő program, akkor meghívja a fő függvényt.
Fejlessze Python-készségeit
PDF titkosító/visszafejtő program létrehozása Pythonban szórakoztató, de kihívásokkal teli projekt. Segít gyakorolni Python-készségeit és elsajátítani a fájlkezelést a nyelvvel.
Képességeinek fejlesztése érdekében több Python-projekten kell dolgoznia. Ez segít több Python-könyvtárral és modullal való interakcióban. A Python nagyon sokrétű, és számos területen alkalmazható különféle feladatok elvégzésére.