March 29, 2023


Akses tidak sah ke file sensitif adalah masalah umum saat ini. Untuk memastikan bahwa hanya orang yang Anda beri otorisasi yang dapat mengakses konten file Anda, Anda dapat mengenkripsinya sebelum transmisi.


Pelajari cara mengenkripsi file PDF menggunakan Python, dan cara mendekripsinya kembali ke keadaan semula.


Menyiapkan Lingkungan

Untuk mengikuti, Anda harus terbiasa dengan dasar-dasar Python.

Pada terminal Mac atau antarmuka baris perintah Windows, jalankan perintah berikut untuk menginstal pustaka PyMuPDF:

 pip install PyMuPDF 

Pustaka ini akan membantu Anda membuka dan memanipulasi file PDF.

Instalasi perpustakaan PyMuPDF pada terminal IDE

Setelah selesai menginstal PyMuPDF, Anda siap untuk memulai pengkodean.

Impor Modul Fitz

Impor modul fitz dari perpustakaan PyMuPDF. Ini akan memungkinkan Anda untuk memanggil dan menggunakan fungsi yang didukungnya.

 import fitz

Anda akan menggunakan fitz untuk membuka, mengenkripsi, mendekripsi, dan menyimpan PDF.

Periksa Apakah PDF Dienkripsi

Buat fungsi yang akan memeriksa apakah PDF sudah dienkripsi dengan mengembalikan nilai boolean.

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

Anda akan menggunakan fungsi ini nanti untuk membantu program secara otomatis memutuskan apakah akan mengenkripsi atau mendekripsi input PDF.

Mengenkripsi PDF

Buat fungsi untuk mengenkripsi input PDF. Fungsi akan memeriksa apakah PDF sudah dienkripsi. Jika tidak dienkripsi, itu akan dienkripsi menggunakan algoritma AES-256. Ini adalah algoritme enkripsi terkuat yang ditawarkan fitz. Ini akhirnya akan menyimpan PDF terenkripsi.

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

Fungsi ini menyimpan PDF terenkripsi ke jalur file yang Anda berikan dalam argumen outfile.

Output dari program yang menampilkan file terenkripsi di explorer

Mendekripsi PDF Terenkripsi

Buat fungsi dekripsi. Fungsi ini pertama-tama akan memeriksa apakah file input dienkripsi. Jika dienkripsi, itu akan meminta pengguna untuk memasukkan kata sandi. Ini kemudian akan mencoba membuka PDF menggunakan Kata Sandi yang disediakan. Jika kata sandi benar, fitz akan mendekripsi PDF. Ini kemudian akan menyimpan konten PDF yang didekripsi ke file PDF lain yang tidak dilindungi.

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

Kode ini menyimpan PDF yang tidak dilindungi di direktori kerja Anda saat ini.

output dari program yang menunjukkan file yang didekripsi pada explorer

The telah mendekripsi protected.pdf file dan menyimpannya sebagai decrypted.pdf.

Mengontrol Alur Program

Buat fungsi utama yang akan mengontrol aliran program Anda. Ini akan menyimpan jalur input PDF, memanggil fungsi enkripsi dan dekripsi, dan meneruskan parameter input.

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

Untuk mengubah nama file PDF yang dienkripsi, ganti “protected.pdf” dengan milik Anda, pastikan untuk mempertahankan ekstensi “.pdf”.

Menjalankan Metode Utama

Pastikan metode utama berjalan terlebih dahulu:

 if __name__ == '__main__':
    main()

Kode ini memeriksa apakah skrip dijalankan sebagai program utama dan bukan modul yang diimpor. Jika itu adalah program utama, itu memanggil fungsi utama.

Tingkatkan Keterampilan Python Anda

Membuat program enkripsi/dekripsi PDF dengan Python adalah proyek yang menyenangkan namun menantang. Ini membantu Anda melatih keterampilan Python dan menangani file master dengan bahasa tersebut.

Untuk meningkatkan keterampilan Anda, Anda harus mengerjakan lebih banyak proyek Python. Ini akan membantu Anda berinteraksi dengan lebih banyak pustaka dan modul Python. Python sangat beragam dan Anda dapat menerapkannya di banyak area untuk melakukan tugas yang berbeda.

Leave a Reply

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