Otillåten åtkomst till känsliga filer är ett vanligt problem idag. För att se till att endast de personer du auktoriserar kan komma åt innehållet i dina filer kan du kryptera dem innan överföringen.
Lär dig hur du krypterar en PDF-fil med Python och hur du dekrypterar en tillbaka till dess ursprungliga tillstånd.
Ställa in miljön
För att följa med bör du vara bekant med grunderna i Python.
På en Mac-terminal eller Windows kommandoradsgränssnitt, kör följande kommando för att installera PyMuPDF-biblioteket:
pip installera PyMuPDF
Det här biblioteket hjälper dig att öppna och manipulera PDF-filer.
När du har installerat PyMuPDF är du redo att börja koda.
Den fullständiga källkoden finns tillgänglig i en GitHub-förråd.
Importera Fitz-modulen
Importera fitz-modul från PyMuPDF-biblioteket. Detta gör att du kan ringa och använda de funktioner som stöds.
importera fitz
Du kommer att använda fitz för att öppna, kryptera, dekryptera och spara PDF-filerna.
Kontrollera om PDF: en är krypterad
Skapa en funktion som kontrollerar om PDF: en redan är krypterad och returnerar ett booleskt värde.
defpdf_är_krypterad(fil):
pdf = fitz. Dokument (fil)
lämna tillbaka pdf.isKrypterad
Du kommer att använda den här funktionen senare för att hjälpa programmet att automatiskt bestämma om det ska kryptera eller dekryptera den inmatade PDF-filen.
Krypterar PDF: en
Skapa en funktion för att kryptera den inmatade PDF-filen. Funktionen kontrollerar om PDF: en redan är krypterad. Om den inte är krypterad kommer den att kryptera den med hjälp av AES-256-algoritmen. Detta är den starkaste krypteringsalgoritmen som fitz erbjuder. Den kommer äntligen att spara den krypterade PDF-filen.
defkryptera_pdf_fil(pdf, lösenord, fil, fil):
ominte pdf_er_encrypted (fil):
perm = int(
# Se till att alla har PDF: en
# kan komma åt den
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # tillåter utskrift
| fitz. PDF_PERM_COPY # tillåter kopiering
| fitz. PDF_PERM_ANNOTA # tillåter kommentarer
)# e-krypteringsalgoritm
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile, encryption=encrypt_meth, user_pw=lösenord,
permissions=perm)
om pdf.save:
skriva ut("PDF krypterad")
Den här funktionen sparar den krypterade PDF-filen till den filsökväg du skickar i outfilargumentet.
Dekryptera den krypterade PDF-filen
Skapa en dekrypteringsfunktion. Denna funktion kommer först att kontrollera om indatafilen är krypterad. Om den är krypterad kommer den att uppmana användaren att ange lösenordet. Den kommer sedan att försöka öppna PDF-filen med det angivna lösenordet. Om lösenordet är korrekt kommer fitz att dekryptera PDF-filen. Det kommer sedan att spara innehållet i den dekrypterade PDF-filen till en annan oskyddad PDF-fil.
defdekryptera_pdf(fil):
om pdf_er_encrypted (fil):
lösenord = input('Ange pdf-lösenord:')
pdf = fitz.open (fil)om pdf.authenticate (lösenord):
pdf.save('decrypted.pdf')
om pdf.save:
skriva ut("PDF dekrypterad")
annan:
skriva ut('Fel lösenord')
Denna kod sparar den oskyddade PDF-filen i din nuvarande arbetskatalog.
Den har dekrypterat skyddad.pdf fil och sparade den som dekrypterad.pdf.
Styra programmets flöde
Skapa en huvudfunktion som styr flödet av ditt program. Den kommer att lagra sökvägen för indata-PDF-filen, anropa kryptera och dekryptera funktionen och skicka indataparametrarna.
defhuvud():
# ersätt filsökvägen med antingen den av
# pdf-filen som ska krypteras eller dekrypteras
fil = "sample.pdf"
pdf = fitz.open (fil)
lösenord = "pass123"
kryptera_pdf_fil (pdf, lösenord, "skyddad.pdf", fil)
dekryptera_pdf (pdf)
För att ändra namnet på den krypterade PDF-filen, ersätt "protected.pdf" med din egen, se till att behålla filtillägget ".pdf".
Kör huvudmetoden
Se till att huvudmetoden körs först:
om __namn__ == '__main__':
main()
Denna kod kontrollerar om skriptet körs som huvudprogram och inte som en importerad modul. Om det är huvudprogrammet anropar det huvudfunktionen.
Avancera dina Python-färdigheter
Att skapa ett PDF-kryptering/dekrypteringsprogram i Python är ett roligt men utmanande projekt. Det hjälper dig att träna dina Python-färdigheter och behärska filhantering med språket.
För att utveckla dina färdigheter bör du arbeta med fler Python-projekt. Detta kommer att hjälpa dig att interagera med fler Python-bibliotek och moduler. Python är väldigt mångsidigt och du kan använda det på många områden för att utföra olika uppgifter.