
Java - PDF 문서를 암호화하거나 해독하는 방법
계약서, 송장 및 기타 파일과 같은 수많은 기밀 문서가 PDF 형식으로 저장됩니다. 인터넷을 통해 이러한 민감한 문서를 공유하면 다른 사람이 귀하의 승인 없이 문서 내용에 액세스할 수 있으므로 위험할 수 있습니다. 문서를 암호로 암호화하면 이 문제를 효율적으로 해결할 수 있습니다. 이 기사에서는 Spire.PDF for Java 라이브러리를 사용하여 Java에서 PDF 문서를 암호화하거나 해독하는 방법을 소개합니다.
방법 1: maven을 사용하는 경우 프로젝트의 pom.xml 파일에 다음 코드를 추가하여 애플리케이션에서 JAR 파일을 쉽게 가져올 수 있습니다.
방법 2: maven을 사용하지 않는 경우 this link 에서 JAR 파일을 다운로드하고 zip 파일을 추출한 다음 lib 폴더 아래의 Spire.Pdf.jar 파일을 프로젝트에 종속성으로 가져올 수 있습니다.
PDF 문서는 문서 열기 암호와 권한 암호의 두 가지 유형의 암호로 암호화할 수 있습니다.
문서 열기 암호
PDF를 열려면 사용자 암호라고도 하는 문서 열기 암호가 필요합니다.
권한 비밀번호
마스터 또는 소유자 암호라고도 하는 권한 암호는 PDF의 권한 설정을 변경하는 데 사용됩니다. 이 암호를 사용하면 콘텐츠 인쇄, 편집 및 복사와 같은 PDF의 특정 기능을 제한할 수 있습니다.
PDF 문서가 두 가지 유형의 암호로 암호화된 경우 수신자는 두 가지 암호 중 하나를 사용하여 PDF를 열 수 있습니다. 그러나 설정한 제한을 변경해야 하는 경우 권한 암호를 입력해야 합니다.
Spire.PDF를 사용하면 개발자가 PdfDocument.getSecurity().encrypt(openPassword, permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize) 메서드를 사용하여 공개 암호 및 권한 암호로 PDF 문서를 암호화할 수 있습니다. 다음은 이 기능을 구현하는 세부 단계입니다.
PdfDocument 클래스의 인스턴스를 초기화합니다. PdfDocument.loadFromFile() 메서드를 사용하여 PDF 파일을 로드합니다. PdfDocument.getSecurity().encrypt(openPassword, permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize) 메서드를 사용하여 열기 및 권한 암호로 PDF를 암호화합니다. PdfDocument.saveToFile() 메서드를 사용하여 결과 PDF를 저장합니다.
아래 단계와 같이 PdfDocument.getSecurity().encrypt(openPassword, permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize, originalPermissionPassword) 메서드를 사용하여 열린 암호와 권한 암호를 비어 있는 것으로 설정하여 암호화된 PDF 문서를 해독할 수 있습니다.
PdfDocument 클래스의 인스턴스를 초기화합니다. PdfDocument.loadFromFile(filePath, password) 메서드를 사용하여 암호가 있는 암호화된 PDF를 로드합니다. PdfDocument.getSecurity().encrypt(openPassword, permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize, originalPermissionPassword) 메서드를 사용하여 열기 및 권한 암호를 비어 있는 것으로 설정하여 문서를 해독합니다. PdfDocument.saveToFile() 메서드를 사용하여 결과 PDF를 저장합니다.
종속성 추가
방법 1: maven을 사용하는 경우 프로젝트의 pom.xml 파일에 다음 코드를 추가하여 애플리케이션에서 JAR 파일을 쉽게 가져올 수 있습니다.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.7.0</version>
</dependency>
</dependencies>
방법 2: maven을 사용하지 않는 경우 this link 에서 JAR 파일을 다운로드하고 zip 파일을 추출한 다음 lib 폴더 아래의 Spire.Pdf.jar 파일을 프로젝트에 종속성으로 가져올 수 있습니다.
Java를 사용하여 PDF 문서 암호화
PDF 문서는 문서 열기 암호와 권한 암호의 두 가지 유형의 암호로 암호화할 수 있습니다.
문서 열기 암호
PDF를 열려면 사용자 암호라고도 하는 문서 열기 암호가 필요합니다.
권한 비밀번호
마스터 또는 소유자 암호라고도 하는 권한 암호는 PDF의 권한 설정을 변경하는 데 사용됩니다. 이 암호를 사용하면 콘텐츠 인쇄, 편집 및 복사와 같은 PDF의 특정 기능을 제한할 수 있습니다.
PDF 문서가 두 가지 유형의 암호로 암호화된 경우 수신자는 두 가지 암호 중 하나를 사용하여 PDF를 열 수 있습니다. 그러나 설정한 제한을 변경해야 하는 경우 권한 암호를 입력해야 합니다.
Spire.PDF를 사용하면 개발자가 PdfDocument.getSecurity().encrypt(openPassword, permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize) 메서드를 사용하여 공개 암호 및 권한 암호로 PDF 문서를 암호화할 수 있습니다. 다음은 이 기능을 구현하는 세부 단계입니다.
import com.spire.pdf.PdfDocument;
import com.spire.pdf.security.PdfEncryptionKeySize;
import com.spire.pdf.security.PdfPermissionsFlags;
import java.util.EnumSet;
public class Encryption {
public static void main(String []args){
//Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
//Load the PDF document
pdf.loadFromFile("Sample.pdf");
//Encrypt the PDF with open and permissions passwords
pdf.getSecurity().encrypt("openPassword", "permissionPassword", EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Copy_Content), PdfEncryptionKeySize.Key_256_Bit);
//Save and close
pdf.saveToFile("Encryption.pdf");
pdf.close();
}
}
Java를 사용하여 PDF 문서 해독
아래 단계와 같이 PdfDocument.getSecurity().encrypt(openPassword, permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize, originalPermissionPassword) 메서드를 사용하여 열린 암호와 권한 암호를 비어 있는 것으로 설정하여 암호화된 PDF 문서를 해독할 수 있습니다.
import com.spire.pdf.PdfDocument;
import com.spire.pdf.security.PdfEncryptionKeySize;
import com.spire.pdf.security.PdfPermissionsFlags;
public class Decryption {
public static void main(String []args) throws Exception {
//Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
//Load the encrypted PDF with password
pdf.loadFromFile("Encryption.pdf", "openPassword");
//Decrypt the PDF by setting the open and permissions password as empty
pdf.getSecurity().encrypt("", "", PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key_256_Bit, "permissionPassword");
//Save and close
pdf.saveToFile("Decryption.pdf");
pdf.close();
}
}