Como criptografar e descriptografar arquivos PDF usando Python
O acesso não autorizado a arquivos confidenciais é um problema comum atualmente. Para garantir que apenas as pessoas que você autoriza possam acessar o conteúdo de seus arquivos, você pode criptografá-los antes da transmissão.
Aprenda como criptografar um arquivo PDF usando Python e como descriptografar um de volta ao seu estado original.
Configurando o ambiente
Para acompanhar, você deve estar familiarizado com os fundamentos do Python.
Em um terminal Mac ou interface de linha de comando do Windows, execute o seguinte comando para instalar a biblioteca PyMuPDF:
pip install PyMuPDF
Esta biblioteca irá ajudá-lo a abrir e manipular arquivos PDF.
Quando terminar de instalar o PyMuPDF, você estará pronto para começar a codificar.
Importar o Módulo Fitz
Importe o módulo fitz da biblioteca PyMuPDF. Isso permitirá que você chame e use as funções que ele suporta.
import fitz
Você usará fitz para abrir, criptografar, descriptografar e salvar os PDFs.
Verifique se o PDF está criptografado
Crie uma função que verificará se o PDF já está criptografado retornando um valor booleano.
def pdf_is_encrypted(file):
pdf = fitz.Document(file)
return pdf.isEncrypted
Você usará essa função posteriormente para ajudar o programa a decidir automaticamente se criptografa ou descriptografa o PDF de entrada.
Criptografando o PDF
Crie uma função para criptografar o PDF de entrada. A função verificará se o PDF já está criptografado. Se não estiver criptografado, ele será criptografado usando o algoritmo AES-256. Este é o algoritmo de criptografia mais forte que o Fitz oferece. Ele finalmente salvará o PDF criptografado.
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")
Esta função salva o PDF criptografado no caminho do arquivo que você passa no argumento outfile.
Descriptografando o PDF criptografado
Crie uma função de descriptografia. Esta função verificará primeiro se o arquivo de entrada está criptografado. Se estiver criptografado, ele solicitará que o usuário digite a senha. Em seguida, ele tentará abrir o PDF usando a senha fornecida. Se a senha estiver correta, fitz descriptografará o PDF. Em seguida, ele salvará o conteúdo do PDF descriptografado em outro arquivo PDF desprotegido.
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')
Este código salva o PDF desprotegido em seu diretório de trabalho atual.
O descriptografou o arquivo protected.pdf e o salvou como decrypted.pdf .
Controlando o Fluxo do Programa
Crie uma função principal que controlará o fluxo do seu programa. Ele armazenará o caminho do PDF de entrada, chamará a função criptografar e descriptografar e passará os parâmetros de entrada.
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)
Para alterar o nome do arquivo PDF criptografado, substitua “protected.pdf” pelo seu, certificando-se de manter a extensão “.pdf”.
Executando o método principal
Certifique-se de que o método principal seja executado primeiro:
if __name__ == '__main__':
main()
Este código verifica se o script está sendo executado como o programa principal e não como um módulo importado. Se for o programa principal, chama a função principal.
Aprimore suas habilidades em Python
Criar um programa de criptografia/descriptografia de PDF em Python é um projeto divertido, mas desafiador. Ele ajuda você a praticar suas habilidades em Python e dominar o manuseio de arquivos com a linguagem.
Para aprimorar suas habilidades, você deve trabalhar em mais projetos Python. Isso ajudará você a interagir com mais bibliotecas e módulos do Python. O Python é muito diversificado e você pode aplicá-lo em muitas áreas para realizar diferentes tarefas.
Deixe um comentário