Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

Python

파이썬으로 PDF 파일을 암호화하고 해독하는 방법

권현욱(엑셀러) 2024. 9. 22. 19:05
반응형

들어가기 전에

PDF 문서는 우리의 개인 및 직업 생활에 필수적인 부분이 되었습니다. 기밀 비즈니스 보고서에서 민감한 개인 기록에 이르기까지 PDF는 중요한 정보를 저장하고 공유하는 데 널리 사용됩니다. 그러나 데이터 침해 및 무단 액세스의 위험이 증가함에 따라 PDF 파일의 보안 요소가 중요해졌습니다. 파이썬을 사용하여 PDF 파일을 암호화하고 해독하는 방법을 소개합니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

이미지: 아이엑셀러 닷컴


※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.

  • 원문: How to Encrypt and Decrypt PDF Files with Python
  • URL: https://medium.com/@alice.yang_10652/how-to-encrypt-and-decrypt-pdf-files-with-python-124d86a70718

PDF 파일 암호화 및 암호 해독을 위한 파이썬 라이브러리

Python에서 PDF 파일을 암호화하고 해독하려면 Python 애플리케이션 내에서 PDF 파일을 생성, 읽기, 조작, 변환하도록 설계된 다기능 라이브러리인 Spire.PDF for Python을 사용할 수 있습니다. PyPI에서 다음 pip 명령을 사용하여 Python용 Spire.PDF를 설치할 수 있습니다.

pip install Spire.Pdf

 

Python용 Spire.PDF가 이미 설치되어 있고 최신 버전으로 업그레이드하려면 다음 pip 명령을 사용하세요.

pip install - upgrade Spire.Pdf

 

설치에 대한 자세한 내용은 [여기]를 참조하세요.

파이썬으로 PDF 암호화하기

PDF를 암호화하려면 파일을 열고 볼 때 필요한 사용자 비밀번호(열기 비밀번호)를 설정해야 합니다.

사용자 비밀번호(공개 비밀번호)란 무엇인가요?

  • 사용자가 PDF 문서를 열고 보기 위해 입력해야 하는 비밀번호입니다.
  • PDF 콘텐츠에 대한 액세스를 제한하여 권한이 있는 사람만 파일에 액세스할 수 있도록 합니다.
  • 사용자 비밀번호는 PDF를 열 수 있는 액세스 권한을 부여하는 것 외에 추가적인 권한이나 제한을 제공하지 않습니다.

 

사용자 또는 열기 비밀번호를 설정하는 것 외에도 PDF 콘텐츠 보안에 사용할 암호화 수준 또는 알고리즘도 설정해야 합니다. Python용 Spire.PDF는 다음과 같은 암호화 수준 또는 알고리즘을 지원합니다.

 

  • 40비트 RC4
  • 128비트 RC4
  • 128비트 AES
  • 256비트 AES

 

Python을 사용하여 PDF 파일을 암호화하는 주요 단계는 다음과 같습니다.

  • PdfDocument 인스턴스를 생성하고 PdfDocument.LoadFromFile() 메서드를 사용하여 PDF 파일을 로드합니다.
  • PdfSecurityPolicy를 생성하고 문서를 여는 데 필요한 사용자 비밀번호를 설정합니다.
  • PdfSecurityPolicy 클래스의 EncryptionAlgorithm 속성을 통해 PDF를 보호하는 데 사용할 암호화 알고리즘을 설정합니다.
  • PdfDocument.Encrypt(securityPolicy:PdfSecurityPolicy) 메서드를 사용하여 PDF 문서를 암호화하는 보안 정책을 적용합니다.
  • 암호화된 PDF 문서를 새 파일에 저장합니다.

 

다음 코드 예제는 Python을 사용하여 PDF 파일을 암호화하는 방법을 보여줍니다.

from spire.pdf.common import *
from spire.pdf import *

# Create a PdfDocument object
pdf = PdfDocument()
# Load an existing PDF file that needs to be encrypted
pdf.LoadFromFile("Sample.pdf")

# Create a security policy and set the user password required to open the document
securityPolicy = PdfPasswordSecurityPolicy("userpassword", str())

# Specify the encryption algorithm to use for securing the PDF
securityPolicy.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES_256

# Apply the security policy to encrypt the PDF document
pdf.Encrypt(securityPolicy)

# Save the encrypted PDF document to a new file
pdf.SaveToFile("Encrypt.pdf")
pdf.Close()

 

Python으로 PDF 암호화 또는 암호 보호

파이썬으로 PDF에서 보안 권한 설정하기

PDF 문서에 대한 보안 권한을 설정하려면 사용자 비밀번호 외에 소유자 비밀번호(권한 비밀번호)를 설정해야 합니다.

소유자 비밀번호(권한 비밀번호)란 무엇인가요?

  • PDF 문서에 대해 수행할 수 있는 권한과 작업을 제어하는 데 사용됩니다.
  • 이를 통해 문서 소유자는 PDF에서 인쇄, 복사, 수정 또는 콘텐츠 추출과 같은 특정 작업을 제한할 수 있습니다.
  • 소유자 비밀번호는 일반적으로 사용자 비밀번호보다 더 강력하며, 소유자에게 PDF의 보안 설정에 대한 모든 권한을 부여합니다.

 

Python을 사용하여 PDF에서 보안 권한을 설정하는 주요 단계는 다음과 같습니다.

  • PdfDocument 인스턴스를 생성하고 PdfDocument.LoadFromFile() 메서드를 사용하여 PDF 파일을 로드합니다.
  • PdfSecurityPolicy를 생성하고 문서를 열 수 있는 사용자 비밀번호와 권한을 제한하는 소유자 비밀번호를 설정합니다.
  • PdfSecurityPolicy 클래스의 EncryptionAlgorithm 속성을 통해 PDF 보안에 사용할 암호화 알고리즘을 설정합니다.
  • 모든 권한을 제한한 다음 PdfSecurityPolicy 클래스의 DocumentPrivilege 속성을 통해 특정 권한만 허용합니다.
  • PdfDocument.Encrypt(securityPolicy:PdfSecurityPolicy) 메서드를 사용하여 PDF 문서를 암호화하는 보안 정책을 적용합니다.
  • 암호화된 PDF 문서를 새 파일에 저장합니다.

 

다음 코드 예제는 Python을 사용하여 PDF에서 보안 권한을 설정하는 방법을 보여줍니다.

from spire.pdf.common import *
from spire.pdf import *

# Create a PdfDocument object
pdf = PdfDocument()
# Load an existing PDF file that needs to be encrypted
pdf.LoadFromFile("Sample.pdf")

# Create a security policy and set the user password to open the document and the owner password to restrict permissions
securityPolicy = PdfPasswordSecurityPolicy("userpassword", "ownerpassword")

# Set the encryption algorithm 
securityPolicy.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES_256

# Restrict all permissions
securityPolicy.DocumentPrivilege = PdfDocumentPrivilege.ForbidAll()
# Only allow printing of the document
securityPolicy.DocumentPrivilege.AllowPrint = True

# Encrypt all document content except metadata (optional, it allows search engines to access the document’s metadata)
# securityPolicy.EncryptMetadata = False

# Apply the security policy to encrypt the PDF document
pdf.Encrypt(securityPolicy)

# Save the encrypted PDF document to a new file
pdf.SaveToFile("EncryptWithPermissions.pdf")
pdf.Close()

 

Python을 사용하여 PDF에서 보안 권한 설정

 

파이썬으로 PDF 암호 해독하기

암호화된 PDF 파일은 사용자 비밀번호 또는 소유자 비밀번호로 열 수 있습니다. 파일이 열리면 PdfDocument.Decrypt() 메서드를 사용하여 암호를 해독할 수 있습니다. Python을 사용하여 암호화된 PDF 파일을 해독하는 주요 단계는 다음과 같습니다.

  • PdfDocument 인스턴스를 생성하고 PdfDocument.LoadFromFile() 메서드를 사용하여 사용자 비밀번호 또는 소유자 비밀번호로 암호화된 PDF 파일을 로드합니다.
  • PdfDocument.Decrypt() 메서드를 호출하여 PDF 파일의 암호를 해독합니다.
  • 해독된 PDF 파일을 새 파일에 저장합니다.

 

다음 코드 예제는 Python을 사용하여 암호화된 PDF 파일을 해독하는 방법을 보여줍니다.

from spire.pdf.common import *
from spire.pdf import *

# Create a PdfDocument object
pdf = PdfDocument()
# Load an encrypted PDF document with either its user password or owner password 
pdf.LoadFromFile("EncryptWithPermissions.pdf", "userpassword")

# Decrypt the PDF document
pdf.Decrypt("ownerpassword")

# Save the resulting document to a new file
pdf.SaveToFile("Decrypt.pdf")
pdf.Close()

 

마치며

파이썬을 이용하여 PDF 파일을 암호화하고, PDF 파일에 대한 보안 권한을 설정하고, PDF 파일을 복호화하는 방법에 대해 살펴보았습니다. 업무에 도움이 되시길 바랍니다.