/ / Cách mã hóa và giải mã tệp PDF bằng Python

Cách mã hóa và giải mã tệp PDF bằng Python

Truy cập trái phép vào các tệp nhạy cảm là một vấn đề phổ biến hiện nay. Để đảm bảo rằng chỉ những người bạn ủy quyền mới có thể truy cập nội dung tệp của bạn, bạn có thể mã hóa chúng trước khi truyền.


Tìm hiểu cách mã hóa tệp PDF bằng Python và cách giải mã tệp trở lại trạng thái ban đầu.


Thiết lập môi trường

Để theo dõi, bạn nên làm quen với những kiến ​​thức cơ bản về Python.

Trên thiết bị đầu cuối Mac hoặc giao diện dòng lệnh Windows, hãy chạy lệnh sau để cài đặt thư viện PyMuPDF:

 pip install PyMuPDF 

Thư viện này sẽ giúp bạn mở và thao tác với các tệp PDF.

Cài đặt thư viện PyMuPDF trên thiết bị đầu cuối của IDE

Khi cài đặt xong PyMuPDF, bạn đã sẵn sàng bắt đầu viết mã.

Nhập mô-đun Fitz

Nhập mô-đun fitz của thư viện PyMuPDF. Điều này sẽ cho phép bạn gọi và sử dụng các chức năng mà nó hỗ trợ.

 import fitz

Bạn sẽ sử dụng fitz để mở, mã hóa, giải mã và lưu các tệp PDF.

Kiểm tra xem PDF có được mã hóa không

Tạo một hàm sẽ kiểm tra xem PDF đã được mã hóa chưa và trả về giá trị boolean.

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

Bạn sẽ sử dụng chức năng này sau để giúp chương trình tự động quyết định mã hóa hay giải mã tệp PDF đầu vào.

Mã hóa PDF

Tạo một chức năng để mã hóa PDF đầu vào. Hàm sẽ kiểm tra xem tệp PDF đã được mã hóa chưa. Nếu nó không được mã hóa, nó sẽ mã hóa nó bằng thuật toán AES-256. Đây là thuật toán mã hóa mạnh nhất mà fitz cung cấp. Cuối cùng, nó sẽ lưu tệp PDF được mã hóa.

 def encrypt_pdf_file(pdf, password, outfile, file):
    if not pdf_is_encrypted(file):
        perm = int(
            
            
            fitz.PDF_PERM_ACCESSIBILITY
            | fitz.PDF_PERM_PRINT
            | fitz.PDF_PERM_COPY
            | fitz.PDF_PERM_ANNOTATE
        )

        
        encrypt_meth = fitz.PDF_ENCRYPT_AES_256

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

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

Hàm này lưu tệp PDF được mã hóa vào đường dẫn tệp mà bạn chuyển vào đối số tệp ngoài.

Đầu ra của chương trình hiển thị tệp được mã hóa trên explorer

Giải mã PDF được mã hóa

Tạo chức năng giải mã. Chức năng này trước tiên sẽ kiểm tra xem tệp đầu vào có được mã hóa hay không. Nếu nó được mã hóa, nó sẽ nhắc người dùng nhập mật khẩu. Sau đó, nó sẽ cố mở tệp PDF bằng Mật khẩu được cung cấp. Nếu mật khẩu đúng, fitz sẽ giải mã tệp PDF. Sau đó, nó sẽ lưu nội dung của tệp PDF được giải mã vào một tệp PDF không được bảo vệ khác.

 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')

Mã này lưu tệp PDF không được bảo vệ trong thư mục làm việc hiện tại của bạn.

đầu ra của chương trình hiển thị tệp được giải mã trên explorer

đã giải mã được được bảo vệ.pdf tập tin và lưu nó dưới dạng giải mã.pdf.

Kiểm soát dòng chảy của chương trình

Tạo một chức năng chính sẽ kiểm soát luồng chương trình của bạn. Nó sẽ lưu trữ đường dẫn của tệp PDF đầu vào, gọi hàm mã hóa và giải mã, đồng thời chuyển các tham số đầu vào.

 def main():
    
    
    file = 'sample.pdf'
    pdf = fitz.open(file)
    password = 'pass123'
    encrypt_pdf_file(pdf, password, 'protected.pdf', file)
    decrypt_pdf(pdf)

Để thay đổi tên của tệp PDF được mã hóa, hãy thay thế “protected.pdf” bằng tên của riêng bạn, đảm bảo giữ nguyên phần mở rộng “.pdf”.

Chạy phương thức chính

Đảm bảo phương thức chính chạy trước:

 if __name__ == '__main__':
    main()

Mã này kiểm tra xem tập lệnh có đang được chạy dưới dạng chương trình chính chứ không phải mô-đun đã nhập hay không. Nếu là chương trình chính, nó sẽ gọi hàm chính.

Nâng cao kỹ năng Python của bạn

Tạo chương trình mã hóa/giải mã PDF bằng Python là một dự án thú vị nhưng đầy thử thách. Nó giúp bạn thực hành các kỹ năng Python của mình và xử lý tệp thành thạo bằng ngôn ngữ này.

Để nâng cao kỹ năng của mình, bạn nên làm việc với nhiều dự án Python hơn. Điều này sẽ giúp bạn tương tác với nhiều thư viện và mô-đun Python hơn. Python rất đa dạng và bạn có thể áp dụng nó trong nhiều lĩnh vực để thực hiện các nhiệm vụ khác nhau.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *