이 페이지에는 자동 번역된 텍스트가 포함될 수 있습니다.
C# 및 VB.NET에서 PDF 문서 암호화
Docotic.Pdf 라이브러리를 사용하면 암호 또는 인증서로 PDF 문서를 암호화할 수 있습니다.
이 라이브러리는 선택한 암호화 알고리즘으로 보호된 문서를 암호화합니다. 이 라이브러리는 RC4 40비트, RC4 128비트, AES 128비트, AES 256비트 암호화 알고리즘을 지원합니다. 보호된 PDF 파일의 사용자에게 어떤 권한을 부여할지 직접 결정합니다.

암호로 PDF 보호
암호로 보호된 PDF 문서에는 소유자 암호와 선택적 사용자 암호가 있습니다. 누군가 소유자 암호로 암호로 보호된 PDF 파일을 열면 모든 PDF 권한이 부여됩니다. PDF 문서를 사용자 암호로 열거나 암호 없이 열면 "사용자" 권한만 부여됩니다. 예를 들어, 암호화된 PDF 파일의 작성자는 "사용자"의 인쇄를 금지할 수 있지만 "소유자"는 여전히 문서를 인쇄할 수 있습니다.
암호로 보호된 PDF 문서를 만들려면 PdfStandardEncryptionHandler 클래스의 인스턴스를 만들고 필요한 대로 설정합니다. 그런 다음 해당 개체를 문서 저장 옵션의 EncryptionHandler 속성에 할당합니다. 그러면 라이브러리가 저장하는 동안 해당 처리기를 사용하여 PDF 문서를 암호화합니다.
다음 코드 조각은 C#에서 암호로 보호된 PDF 파일을 만드는 방법을 보여줍니다:
using var document = new PdfDocument();
var handler = new PdfStandardEncryptionHandler("owner", "user");
handler.UserPermissions.Flags = PdfPermissionFlags.ModifyContents;
var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
document.Save(outputFileName, saveOptions);
위 코드는 소유자 암호로 owner를, 사용자 암호로 user를 사용합니다. PDF 뷰어는 보호된 PDF 파일을 열기 위해 암호를 요구합니다. 이는 사용자 암호가 null이 아니고 빈 문자열도 아니기 때문입니다.
암호가 설정된 PDF 파일이 필요하지만 누구나 암호 없이 열 수 있도록 허용하려면 사용자 암호에 null 또는 빈 문자열을 사용합니다.
.NET에서 인증서로 PDF 보호
인증서로 보호된 모든 PDF 문서에는 수신자 컬렉션이 있습니다. 이 컬렉션에는 원하는 수의 항목을 포함할 수 있습니다. 각 수신자는 보호된 PDF 문서를 복호화하는 데 사용할 수 있는 인증서를 설명합니다. 각 수신자에 대해 지정된 PDF 액세스 권한이 있습니다. 복호화된 PDF 문서에 부여되는 권한은 문서 보호 해제에 사용된 인증서에 따라 달라집니다.
일부 액세스 권한은 복호화된 PDF 파일에 대한 모든 작업을 허용합니다. Docotic.Pdf 라이브러리에서는 이러한 권한을 가진 수신자를 소유자라고 부릅니다. 일반 수신자는 복호화된 PDF 문서에 대해 제한된 권한을 가집니다.
인증서로 보호된 문서를 만들려면 먼저 PdfPublicKeyEncryptionHandler 클래스의 인스턴스를 만듭니다. 권한 매개 변수가 없는 생성자는 소유자 수신자를 가진 개체를 만듭니다. 일반 수신자를 가진 암호화 처리기를 얻으려면 권한 매개 변수가 있는 생성자를 사용합니다.
AddOwner 메서드를 사용하여 소유자 수신자를 더 추가할 수 있습니다. 일반 수신자를 추가하려면 AddRecipient 메서드를 사용합니다. 필요에 따라 암호화 처리기에 소유자와 일반 수신자를 원하는 만큼 추가할 수 있습니다.
그다음 문서를 저장할 때 라이브러리가 해당 처리기를 사용하도록 지시합니다. 이를 위해 문서 저장 옵션의 EncryptionHandler 속성에 해당 개체를 할당합니다.
다음 코드는 C#에서 인증서로 보호된 PDF 파일을 만드는 방법을 보여줍니다. 이 코드는 소유자와 일반 수신자를 포함하는 처리기를 준비합니다. 두 경우 모두 수신자의 인증서는 제공된 키 저장소에서 가져옵니다.
using var document = new PdfDocument();
var handler = new PdfPublicKeyEncryptionHandler("owner-key-store.p12", "password");
var permissions = new PdfPermissions();
permissions.Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.PrintDocument;
handler.AddRecipient("recipient-key-store.p12", "password", permissions);
var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
document.Save(outputFileName, saveOptions);
PDF 파일 편집 제한
PDF 문서를 암호화할 때는 파일 사용자에 대한 권한을 설정해야 합니다. 즉, 사용자 암호 또는 일반 수신자와 일치하는 인증서로 연 문서에 부여할 PDF 권한을 지정해야 합니다.
Docotic.Pdf 라이브러리는 사용자 권한을 위한 PdfPermissions 클래스를 제공합니다. 이 클래스는 권한을 설정하는 두 가지 방법을 제공합니다. Flags 속성을 사용하여 모든 권한을 한 번에 설정할 수 있습니다. 대안은 가능한 각 권한에 대해 개별 속성을 사용하는 것입니다.
PdfStandardEncryptionHandler 개체를 만들 때는 UserPermissions 속성을 사용하여 권한에 액세스합니다. PdfPublicKeyEncryptionHandler 개체에서는 PdfPermissions 생성자를 사용합니다. 나머지 설정은 동일합니다.
다음 코드는 C#에서 PDF 권한을 설정하는 방법을 보여줍니다:
// 기본적으로 권한 개체는 모든 작업을 허용합니다.
// Flags 속성을 사용하여 특정 권한만 부여할 수 있습니다.
var permisssions1 = new PdfPermissions
{
Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.ModifyAnnotations
};
// 또는 거부하려는 권한만 비활성화할 수 있습니다.
var permisssions2 = new PdfPermissions
{
AssembleDocument = false,
CopyContents = false,
ExtractContents = false,
ModifyContents = false,
PrintDocument = false,
PrintFaithfulCopy = false
};
// 또는 먼저 모든 권한을 비활성화한 다음 허용하려는 권한만 활성화할 수 있습니다.
var permisssions3 = new PdfPermissions
{
AllowEverything = false,
FillFormFields = true,
ModifyAnnotations = true
};
// 이 시점에서 permisssions1, permisssions2, permisssions3 개체는
// 동일한 권한을 설명합니다.
.NET에서 AES-256으로 PDF 암호화
Docotic.Pdf는 AES-256으로 PDF 문서를 암호화할 수 있습니다. 이 암호화 알고리즘은 라이브러리가 지원하는 것 중 가장 강력합니다. 모든 PDF 리더가 이 알고리즘을 지원하는 것은 아니라는 점에 유의하세요.
PdfStandardEncryptionHandler 또는 PdfPublicKeyEncryptionHandler 개체를 만든 후, Algorithm 속성을 사용하여 암호화 알고리즘을 설정합니다.
다음 C# 코드는 암호로 PDF 문서를 보호하고 AES-256으로 암호화하는 방법을 보여줍니다:
using var pdf = new PdfDocument();
// ....
var handler = new PdfStandardEncryptionHandler("owner", "user");
handler.Algorithm = PdfEncryptionAlgorithm.Aes256Bit;
var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
pdf.Save("encrypted", saveOptions);
암호화와 PDF/A
PDF/A 파일은 암호화할 수 없습니다. 문서 저장 옵션에서 암호화 처리기를 설정하고 PDF/A 생성 옵션을 켜려고 하면 라이브러리는 PdfException 형식의 예외를 발생시킵니다.
간단히 보는 PDF/A에는 PDF/A 파일을 보호하는 방법에 대한 조언이 있습니다:
PDF/A 파일을 보호하려는 사용자는 이러한 파일의 저장 위치를 보호해야 합니다. 예를 들어 폴더나 드라이브에 암호 보호를 구현하면 됩니다.