גישה לא מורשית לקבצים רגישים היא בעיה שכיחה כיום. כדי לוודא שרק האנשים שאתה מאשר יכולים לגשת לתוכן הקבצים שלך, אתה יכול להצפין אותם לפני השידור.
למד כיצד להצפין קובץ PDF באמצעות Python, וכיצד לפענח אחד בחזרה למצבו המקורי.
הגדרת הסביבה
כדי לעקוב, עליך להכיר את יסודות פייתון.
במסוף Mac או ממשק שורת הפקודה של Windows, הפעל את הפקודה הבאה כדי להתקין את ספריית PyMuPDF:
pip להתקין PyMuPDF
ספרייה זו תעזור לך לפתוח ולתפעל קבצי PDF.
לאחר שתסיים להתקין PyMuPDF, אתה מוכן להתחיל בקידוד.
קוד המקור המלא זמין ב-a מאגר GitHub.
ייבא את מודול Fitz
ייבוא מודול fitz של ספריית PyMuPDF. זה יאפשר לך להתקשר ולהשתמש בפונקציות שהוא תומך.
יְבוּא פיץ
אתה תשתמש ב-fitz כדי לפתוח, להצפין, לפענח ולשמור את קובצי ה-PDF.
בדוק אם ה-PDF מוצפן
צור פונקציה שתבדוק אם ה-PDF כבר מוצפן ומחזירה ערך בוליאני.
defpdf_מוצפן(קוֹבֶץ):
pdf = fitz. קובץ מסמך)
לַחֲזוֹר pdf.is מוצפן
אתה תשתמש בפונקציה זו מאוחר יותר כדי לעזור לתוכנית להחליט באופן אוטומטי אם להצפין או לפענח את ה-PDF הקלט.
הצפנת ה-PDF
צור פונקציה להצפנת ה-PDF הקלט. הפונקציה תבדוק אם ה-PDF כבר מוצפן. אם הוא לא מוצפן, הוא יצפין אותו באמצעות אלגוריתם AES-256. זהו אלגוריתם ההצפנה החזק ביותר ש-fitz מציע. זה סוף סוף ישמור את ה-PDF המוצפן.
defencrypt_pdf_file(pdf, סיסמה, קובץ outfil, קובץ):
אםלֹא pdf_is_encrypted (קובץ):
perm = int(
# להבטיח לכולם עם ה-PDF
# יכול לגשת אליו
פיץ. PDF_PERM_ACCESSIBILITY
| פיץ. PDF_PERM_PRINT # מתיר הדפסה
| פיץ. PDF_PERM_COPY # מתיר העתקה
| פיץ. PDF_PERM_ANNOTATE # מאפשר הערות
)# אלגוריתם eEncryption
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (קובץ outfile, encryption=encrypt_meth, user_pw=password,
permissions=perm)
אם pdf.save:
הדפס("PDF מוצפן")
פונקציה זו שומרת את ה-PDF המוצפן בנתיב הקובץ שאתה מעביר בארגומנט ה-outfile.
פענוח ה-PDF המוצפן
צור פונקציית פענוח. פונקציה זו תבדוק תחילה אם קובץ הקלט מוצפן. אם הוא מוצפן, הוא יבקש מהמשתמש להזין את הסיסמה. לאחר מכן הוא ינסה לפתוח את ה-PDF באמצעות הסיסמה שסופקה. אם הסיסמה נכונה, fitz יפענח את ה-PDF. לאחר מכן הוא ישמור את תוכן ה-PDF המפוענח לקובץ PDF לא מוגן אחר.
defdecrypt_pdf(קוֹבֶץ):
אם pdf_is_encrypted (קובץ):
סיסמה = קלט('הזן סיסמת pdf:')
pdf = fitz.open (קובץ)אם pdf.authenticate (סיסמה):
pdf.save('decrypted.pdf')
אם pdf.save:
הדפס("PDF מפוענח")
אַחֵר:
הדפס('סיסמא לא נכונה')
קוד זה שומר את ה-PDF הלא מוגן בספריית העבודה הנוכחית שלך.
יש פענח את protected.pdf קובץ ושמר אותו בשם decrypted.pdf.
שליטה בזרימת התוכנית
צור פונקציה ראשית שתשלוט בזרימת התוכנית שלך. הוא יאחסן את הנתיב של ה-PDF הקלט, יקרא לפונקציית ההצפנה והפענוח, ויעביר את פרמטרי הקלט.
defרָאשִׁי():
# החלף את נתיב הקובץ באחד מזה של
# ה-PDF להצפנה או לפענוח
קובץ = 'sample.pdf'
pdf = fitz.open (קובץ)
סיסמה = 'pass123'
encrypt_pdf_file (pdf, סיסמה, 'protected.pdf', קובץ)
decrypt_pdf (pdf)
כדי לשנות את השם של קובץ ה-PDF המוצפן, החלף את "protected.pdf" בשלך, הקפד לשמור את הסיומת ".pdf".
הפעלת השיטה הראשית
ודא שהשיטה הראשית פועלת תחילה:
אם __שם__ == '__רָאשִׁי__':
רָאשִׁי()
קוד זה בודק אם הסקריפט מופעל בתור התוכנית הראשית ולא כמודול מיובא. אם זו התוכנית הראשית, היא קוראת לפונקציה הראשית.
קדם את כישורי הפייתון שלך
יצירת תוכנית הצפנה/פענוח PDF ב-Python היא פרויקט מהנה אך מאתגר. זה עוזר לך לתרגל את כישורי Python שלך וטיפול בקבצים עם השפה.
כדי לקדם את הכישורים שלך, עליך לעבוד על פרויקטים נוספים של Python. זה יעזור לך ליצור אינטראקציה עם ספריות ומודולים נוספים של Python. Python מגוונת מאוד וניתן ליישם אותה בתחומים רבים כדי לבצע משימות שונות.