خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه رمزگذاری و رمزگشایی فایل های PDF با استفاده از پایتون

این ابزار بسیار مفید ابزاری است که بارها و بارها به آن دسترسی خواهید داشت، بنابراین برنامه‌نویسی آن از ابتدا و درک نحوه عملکرد آن یک امتیاز بزرگ است.

امروزه دسترسی غیرمجاز به فایل های حساس یک مشکل رایج است. برای اطمینان از اینکه فقط افرادی که مجاز به آن هستید می توانند به محتوای فایل های شما دسترسی داشته باشند، می توانید آنها را قبل از انتقال رمزگذاری کنید.

یاد بگیرید که چگونه یک فایل PDF را با استفاده از پایتون رمزگذاری کنید و چگونه یک فایل را به حالت اولیه خود بازگردانید.

تنظیم محیط

برای ادامه، باید با اصول پایتون آشنا باشید.

در ترمینال مک یا رابط خط فرمان ویندوز، دستور زیر را برای نصب کتابخانه PyMuPDF اجرا کنید:

pip install PyMuPDF

این کتابخانه به شما کمک می کند تا فایل های PDF را باز کرده و دستکاری کنید.

نصب کتابخانه PyMuPDF در ترمینال یک IDE

هنگامی که نصب PyMuPDF را به پایان رساندید، آماده شروع کدنویسی هستید.

کد منبع کامل در یک مخزن GitHub موجود است.

ماژول فیتز را وارد کنید

ماژول fitz را از کتابخانه PyMuPDF وارد کنید. این به شما امکان می دهد تا از عملکردهایی که پشتیبانی می کند تماس بگیرید و استفاده کنید.

import fitz

شما از fitz برای باز کردن، رمزگذاری، رمزگشایی و ذخیره فایل های PDF استفاده خواهید کرد.

بررسی کنید که آیا PDF رمزگذاری شده است یا خیر

تابعی ایجاد کنید که بررسی کند PDF از قبل رمزگذاری شده است و مقدار بولی را برمی گرداند.

def pdf_is_encrypted(file):
    pdf = fitz.Document(file)
    return pdf.isEncrypted

بعداً از این عملکرد استفاده خواهید کرد تا به برنامه کمک کنید تا به طور خودکار تصمیم بگیرد که آیا PDF ورودی را رمزگذاری یا رمزگشایی کند.

مطلب مرتبط:   7 زبان برنامه نویسی که می توانند شما را بیکار کنند

رمزگذاری PDF

یک تابع برای رمزگذاری PDF ورودی ایجاد کنید. این تابع بررسی می کند که آیا PDF قبلاً رمزگذاری شده است یا خیر. اگر رمزگذاری نشده باشد، با استفاده از الگوریتم AES-256 آن را رمزگذاری می کند. این قوی ترین الگوریتم رمزگذاری است که fitz ارائه می دهد. در نهایت PDF رمزگذاری شده را ذخیره می کند.

def encrypt_pdf_file(pdf, password, outfile, file):
    if not pdf_is_encrypted(file):
        perm = int(
            # Ensure everyone with the PDF
            # can access it
            fitz.PDF_PERM_ACCESSIBILITY
            | fitz.PDF_PERM_PRINT # permits printing
            | fitz.PDF_PERM_COPY # permits copying
            | fitz.PDF_PERM_ANNOTATE # permits annotations
        )

        # eEncryption algorithm
        encrypt_meth = fitz.PDF_ENCRYPT_AES_256

        pdf.save(outfile, encryption=encrypt_meth, user_pw=password,
                 permissions=perm)

        if pdf.save:
            print("PDF encrypted")

این تابع PDF رمزگذاری شده را در مسیر فایلی که در آرگومان outfile عبور می دهید ذخیره می کند.

خروجی برنامه ای که یک فایل رمزگذاری شده را در اکسپلورر نشان می دهد

رمزگشایی PDF رمزگذاری شده

یک تابع رمزگشا ایجاد کنید. این تابع ابتدا بررسی می کند که آیا فایل ورودی رمزگذاری شده است یا خیر. اگر رمزگذاری شده باشد، از کاربر می خواهد رمز عبور را وارد کند. سپس سعی می کند PDF را با استفاده از رمز عبور ارائه شده باز کند. اگر رمز عبور صحیح باشد، fitz PDF را رمزگشایی می کند. سپس محتویات PDF رمزگشایی شده را در یک فایل PDF محافظت نشده دیگر ذخیره می کند.

def decrypt_pdf(file):
    if pdf_is_encrypted(file):
        password = input('Enter pdf password : ')
        pdf = fitz.open(file)

        if pdf.authenticate(password):
            pdf.save('decrypted.pdf')

            if pdf.save:
                print("PDF decrypted")
        else:
            print('Incorrect Password')

این کد PDF محافظت نشده را در فهرست کاری فعلی شما ذخیره می کند.

مطلب مرتبط:   نحوه مصرف نقاط پایانی GraphQL API در Go

خروجی برنامه ای که یک فایل رمزگشایی شده را در اکسپلورر نشان می دهد

فایل protected.pdf را رمزگشایی کرده و آن را به عنوان decrypted.pdf ذخیره کرده است.

کنترل جریان برنامه

یک تابع اصلی ایجاد کنید که جریان برنامه شما را کنترل کند. مسیر PDF ورودی را ذخیره می کند، تابع رمزگذاری و رمزگشایی را فراخوانی می کند و پارامترهای ورودی را ارسال می کند.

def main():
    # replace the file path with either that of
    # the pdf to be encrypted or decrypted
    file = 'sample.pdf'
    pdf = fitz.open(file)
    password = 'pass123'
    encrypt_pdf_file(pdf, password, 'protected.pdf', file)
    decrypt_pdf(pdf)

برای تغییر نام فایل PDF رمزگذاری شده، “protected.pdf” را با نام خود جایگزین کنید، مطمئن شوید که پسوند “.pdf” را نگه دارید.

اجرای روش اصلی

ابتدا مطمئن شوید که روش اصلی اجرا می شود:

if __name__ == '__main__':
    main()

این کد بررسی می کند که آیا اسکریپت به عنوان برنامه اصلی اجرا می شود و نه یک ماژول وارد شده. اگر برنامه اصلی باشد، تابع اصلی را فراخوانی می کند.

مهارت های پایتون خود را ارتقا دهید

ایجاد یک برنامه رمزگذاری/رمزگشایی PDF در پایتون یک پروژه سرگرم کننده اما چالش برانگیز است. این به شما کمک می‌کند مهارت‌های پایتون خود را تمرین کنید و مدیریت فایل‌ها را با این زبان استاد کنید.

برای پیشرفت مهارت های خود، باید روی پروژه های پایتون بیشتری کار کنید. این به شما کمک می کند تا با کتابخانه ها و ماژول های پایتون بیشتری تعامل داشته باشید. پایتون بسیار متنوع است و شما می توانید آن را در بسیاری از زمینه ها برای انجام وظایف مختلف به کار ببرید.