Hassas dosyalara yetkisiz erişim, günümüzde yaygın bir sorundur. Dosyalarınızın içeriğine yalnızca yetki verdiğiniz kişilerin erişebildiğinden emin olmak için, bunları iletimden önce şifreleyebilirsiniz.
Python kullanarak bir PDF dosyasını nasıl şifreleyeceğinizi ve orijinal durumuna geri döndürmenin şifresini nasıl çözeceğinizi öğrenin.
Ortamı Kurma
Takip etmek için, aşina olmalısınız Python'un temelleri.
Bir Mac terminalinde veya Windows komut satırı arabiriminde, PyMuPDF kitaplığını yüklemek için aşağıdaki komutu çalıştırın:
pip kurulumu PyMuPDF
Bu kitaplık, PDF dosyalarını açmanıza ve değiştirmenize yardımcı olacaktır.
PyMuPDF'yi yüklemeyi bitirdiğinizde, kodlamaya başlamaya hazırsınız demektir.
Tam kaynak kodu bir GitHub deposu.
Fitz Modülünü İçe Aktarın
PyMuPDF kitaplığının fitz modülünü içe aktarın. Bu, desteklediği işlevleri aramanıza ve kullanmanıza olanak tanır.
içe aktarmak fitz
PDF'leri açmak, şifrelemek, şifresini çözmek ve kaydetmek için fitz'i kullanacaksınız.
PDF'nin Şifreli Olup Olmadığını Kontrol Edin
Bir boole değeri döndürerek PDF'nin zaten şifrelenmiş olup olmadığını kontrol edecek bir işlev oluşturun.
kesinpdf_is_encrypted(dosya):
pdf = fitz. Belge Dosyası)
geri dönmek pdf.isEncrypted
Bu işlevi daha sonra, programın giriş PDF'sini şifrelemeye veya şifresini çözmeye otomatik olarak karar vermesine yardımcı olmak için kullanacaksınız.
PDF'yi şifreleme
Giriş PDF'sini şifrelemek için bir işlev oluşturun. İşlev, PDF'nin halihazırda şifrelenmiş olup olmadığını kontrol edecektir. Şifrelenmemişse, kullanarak şifreleyecektir. AES-256 algoritması. Bu, fitz'in sunduğu en güçlü şifreleme algoritmasıdır. Sonunda şifrelenmiş PDF'yi kaydedecektir.
kesinencrypt_pdf_file(pdf, şifre, dosya dışı, dosya):
eğerOlumsuz pdf_is_encrypted (dosya):
izin = int(
# PDF ile herkesin emin olmasını sağlayın
# erişebilir
fitz. PDF_PERM_ACCESSIBILITY
| fitz. PDF_PERM_PRINT # yazdırmaya izin verir
| fitz. PDF_PERM_COPY # kopyalamaya izin verir
| fitz. PDF_PERM_ANNOTATE # ek açıklamalara izin verir
)# eŞifreleme algoritması
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (dosya dışı, şifreleme=encrypt_meth, user_pw=şifre,
izinler=izin)
eğer pdf.kaydet:
Yazdır("PDF şifreli")
Bu işlev, şifrelenmiş PDF'yi, dosya dışı bağımsız değişkeninde ilettiğiniz dosya yoluna kaydeder.
Şifrelenmiş PDF'nin şifresini çözme
Bir şifre çözme işlevi oluşturun. Bu işlev, önce giriş dosyasının şifrelenip şifrelenmediğini kontrol edecektir. Şifreli ise, kullanıcıdan şifreyi girmesini ister. Daha sonra sağlanan Parolayı kullanarak PDF'yi açmaya çalışacaktır. Parola doğruysa fitz, PDF'nin şifresini çözecektir. Ardından, şifresi çözülmüş PDF'nin içeriğini korumasız başka bir PDF dosyasına kaydedecektir.
kesindecrypt_pdf(dosya):
eğer pdf_is_encrypted (dosya):
şifre = giriş('pdf şifresini girin:')
pdf = fitz.open (dosya)eğer pdf.authenticate (şifre):
pdf.kaydet('şifresi çözülmüş.pdf')
eğer pdf.kaydet:
Yazdır("PDF şifresi çözüldü")
başka:
Yazdır('Yanlış parola')
Bu kod, korumasız PDF'yi geçerli çalışma dizininize kaydeder.
şifresini çözdü korumalı.pdf dosya ve olarak kaydetti şifresi çözülmüş.pdf.
Programın Akışını Kontrol Etme
Programınızın akışını kontrol edecek bir ana işlev oluşturun. Giriş PDF'sinin yolunu saklayacak, şifreleme ve şifre çözme işlevini çağıracak ve giriş parametrelerini iletecektir.
kesinana():
# dosya yolunu şunlardan biriyle değiştirin
# şifrelenecek veya şifresi çözülecek pdf
dosya = "örnek.pdf"
pdf = fitz.open (dosya)
şifre = 'pass123'
encrypt_pdf_file (pdf, parola, "korumalı.pdf", dosya)
decrypt_pdf (pdf)
Şifreli PDF dosyasının adını değiştirmek için ".pdf" uzantısını koruduğunuzdan emin olarak "protected.pdf" yerine kendinizinkini yazın.
Ana Yöntemi Çalıştırma
Önce ana yöntemin çalıştığından emin olun:
eğer __isim__ == '__ana__':
ana()
Bu kod, komut dosyasının içe aktarılan bir modül olarak değil de ana program olarak çalıştırılıp çalıştırılmadığını kontrol eder. Ana program ise, ana işlevi çağırır.
Python Becerilerinizi Geliştirin
Python'da bir PDF şifreleme/şifre çözme programı oluşturmak eğlenceli ama zorlu bir projedir. Python becerilerinizi geliştirmenize ve dilde dosya işleme konusunda uzmanlaşmanıza yardımcı olur.
Becerilerinizi geliştirmek için daha fazla Python projesi üzerinde çalışmalısınız. Bu, daha fazla Python kitaplığı ve modülüyle etkileşim kurmanıza yardımcı olacaktır. Python çok çeşitlidir ve farklı görevleri yerine getirmek için birçok alanda uygulayabilirsiniz.