Cette page peut contenir du texte traduit automatiquement.

Chiffrer les documents PDF en C# et VB.NET

Avec l'aide de la bibliothèque Docotic.Pdf, vous pouvez crypter des documents PDF avec des mots de passe ou des certificats.

La bibliothèque crypte les documents protégés à l'aide d'un algorithme de cryptage de votre choix. La bibliothèque prend en charge les algorithmes de chiffrement RC4 40 bits, RC4 128 bits, AES 128 bits et AES 256 bits. Vous décidez quelles autorisations vous souhaitez accorder aux utilisateurs de fichiers PDF protégés.

Chiffrer les documents PDF en C# et VB.NET

Protéger le PDF avec des mots de passe

Les documents PDF protégés par mot de passe ont un mot de passe de propriétaire et, éventuellement, un mot de passe d'utilisateur. Toutes les autorisations PDF sont accordées lorsque quelqu'un ouvre un fichier PDF protégé par mot de passe avec le mot de passe du propriétaire. Si un document PDF est ouvert avec le mot de passe utilisateur ou sans mot de passe du tout, seules les autorisations «utilisateur» sont accordées. Par exemple, l'auteur du fichier PDF crypté peut interdire l'impression aux «utilisateurs», mais le «propriétaire» pourra toujours imprimer le document.

Pour produire un document PDF protégé par mot de passe, créez une instance de la classe PdfStandardEncryptionHandler et configurez-la selon vos besoins. Attribuez ensuite l'objet à la propriété EncryptionHandler dans les options d'enregistrement du document. La bibliothèque utilisera le gestionnaire pour crypter le document PDF lors de son enregistrement.

Bibliothèque Docotic.Pdf 9.3.17014-dev Tests de régression 14,645 réussis Téléchargements totaux de NuGet 4,172,488

L'extrait de code suivant montre comment créer un fichier PDF protégé par mot de passe en C# :

using (PdfDocument document = ...)
{
    var handler = new PdfStandardEncryptionHandler("owner", "user");
    handler.UserPermissions.Flags = PdfPermissionFlags.ModifyContents;

    var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
    document.Save(outputFileName, saveOptions);
}

Le code ci-dessus utilise owner pour le mot de passe propriétaire et user pour le mot de passe utilisateur. Les visionneuses PDF nécessiteront un mot de passe pour ouvrir le fichier PDF sécurisé. En effet, le mot de passe de l'utilisateur n'est pas null ni une chaîne vide.

Si vous souhaitez disposer d'un fichier PDF sécurisé mais que vous souhaitez permettre à quiconque de l'ouvrir sans mot de passe, utilisez null ou une chaîne vide pour le mot de passe utilisateur.

Protégez le PDF avec des certificats dans .NET

Tout document PDF protégé par un certificat possède une collection de destinataires. La collection peut contenir n'importe quel nombre d'éléments. Chaque destinataire décrit un certificat pouvant être utilisé pour décrypter le document PDF sécurisé. Pour chaque destinataire, des autorisations d'accès au PDF sont spécifiées. Les autorisations accordées pour le document PDF déchiffré dépendent du certificat utilisé pour déprotéger le document.

Certaines autorisations d'accès autorisent toutes les opérations avec le fichier PDF déchiffré. Les destinataires disposant de telles autorisations sont appelés propriétaires dans la bibliothèque Docotic.Pdf. Les destinataires réguliers disposent d'autorisations limitées pour le document PDF déchiffré.

Pour créer un document protégé par un certificat, commencez par créer une instance de la classe PdfPublicKeyEncryptionHandler. Les constructeurs sans paramètre d'autorisations créent un objet avec un propriétaire destinataire. Utilisez des constructeurs avec le paramètre permissions pour obtenir un gestionnaire de chiffrement avec un destinataire régulier.

Vous pouvez ajouter d'autres destinataires propriétaires à l'aide des méthodes AddOwner. Utilisez les méthodes AddRecipient pour ajouter des destinataires réguliers. Vous pouvez ajouter autant de propriétaires et de destinataires réguliers au gestionnaire de chiffrement que nécessaire.

Demandez ensuite à la bibliothèque d'utiliser le gestionnaire lors de l'enregistrement du document. Pour cela, affectez l'objet à la propriété EncryptionHandler dans les options de sauvegarde du document.

Le code suivant montre comment créer un fichier PDF protégé par certificat en C#. Le code prépare un gestionnaire avec un propriétaire et des destinataires réguliers. Dans les deux cas, les certificats des destinataires proviennent des magasins de clés fournis.

using (PdfDocument document = ...)
{
    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);
}

Restreindre la modification d'un fichier PDF

Lors du cryptage d'un document PDF, il est nécessaire de configurer les autorisations pour les utilisateurs du fichier. En d'autres termes, vous devez spécifier l'autorisation PDF à accorder pour le document ouvert avec un mot de passe utilisateur ou un certificat correspondant à un destinataire habituel.

La bibliothèque Docotic.Pdf fournit la classe PdfPermissions pour les autorisations des utilisateurs. Cette classe propose deux manières de configurer les autorisations. Vous pouvez configurer toutes les autorisations à la fois en utilisant la propriété Flags. L'alternative consiste à utiliser des propriétés individuelles pour chaque autorisation possible.

Lors de la création d'un objet PdfStandardEncryptionHandler, utilisez la propriété UserPermissions pour accéder aux autorisations. Avec un objet PdfPublicKeyEncryptionHandler, utilisez le constructeur PdfPermissions. Le reste de la configuration est le même.

Le code suivant montre comment configurer les autorisations PDF en C# :

// Par défaut, les objets d'autorisations autorisent tout.

// Vous pouvez utiliser la propriété Flags pour accorder uniquement des autorisations spécifiques.
var permisssions1 = new PdfPermissions();
permisssions1.Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.ModifyAnnotations;

// Ou vous pouvez désactiver uniquement les autorisations que vous souhaitez refuser.
var permisssions2 = new PdfPermissions();
permisssions2.AssembleDocument = false;
permisssions2.CopyContents = false;
permisssions2.ExtractContents = false;
permisssions2.ModifyContents = false;
permisssions2.PrintDocument = false;
permisssions2.PrintFaithfulCopy = false;

// Ou vous pouvez d'abord désactiver toutes les autorisations,
// puis activer uniquement celles que vous souhaitez autoriser.
var permisssions3 = new PdfPermissions();
permisssions3.AllowEverything = false;
permisssions3.FillFormFields = true;
permisssions3.ModifyAnnotations = true;

// Les objets permissions1, permissions2 et permissions3
// décrivent les mêmes autorisations à ce stade.

Crypter le PDF à l'aide d'AES-256 dans .NET

Docotic.Pdf peut crypter des documents PDF avec AES-256. Cet algorithme de cryptage est le plus puissant pris en charge par la bibliothèque. Veuillez noter que tous les lecteurs PDF ne prennent pas en charge l'algorithme.

Après avoir créé un objet PdfStandardEncryptionHandler ou PdfPublicKeyEncryptionHandler, utilisez la propriété Algorithm pour configurer l'algorithme de chiffrement.

Le code C# suivant montre comment protéger un document PDF avec des mots de passe et le chiffrer à l'aide d'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);
}

Cryptage et PDF/A

Il n'est pas autorisé de crypter des fichiers PDF/A. La bibliothèque génère une exception de type PdfException lorsque vous essayez de configurer un gestionnaire de cryptage et d'activer l'option permettant de produire un PDF/A dans les options d'enregistrement d'un document.

PDF/A in a Nutshell propose des conseils sur la manière de sécuriser les fichiers PDF/A :

Les utilisateurs qui souhaitent protéger leurs fichiers PDF/A doivent protéger l'emplacement de stockage de ces fichiers. Ceci peut être réalisé en implémentant une protection par mot de passe pour un dossier ou un lecteur, par exemple.