THotPDF.CryptKeyLength Property

 

THotPDF.CryptKeyLength

THotPDF

 

Nach oben  Zurück  Weiter

Determines PDF file encryption method.

 

type

THPDFKeyType = ( k40,  k128,  aes128,  aes256,  aesgcm );

 

Delphi syntax:

property CryptKeyLength: THPDFKeyType;

 

C++ syntax:

__property THPDFKeyType CryptKeyLength;

 

Description

Verwenden Sie CryptKeyLength, um die Revision des Standard Security Handlers und die Chiffre zu wählen, die bei aktivem ActivateProtection zum Einsatz kommen.

Setzen Sie bei AES-Kennwortverschlüsselung EncryptMetadata vor BeginDoc auf false, um /EncryptMetadata false zu schreiben, die XMP-/Metadata-Streams im Klartext zu belassen und die passende AES-128-Schlüsselableitung bzw. das /Perms-Metadaten-Flag von AES-256 zu verwenden. Aus Kompatibilitätsgründen ist der Standardwert true.

 

Value                Meaning


k40                        Standard Security Handler V=1, R=2, RC4 mit 40-Bit-Schlüssel (PDF 1.1+).

k128                        Standard Security Handler V=2, R=3, RC4 mit 128-Bit-Schlüssel (PDF 1.4+).

aes128                  Standard Security Handler V=4, R=4 mit dem Crypt-Filter StdCF (CFM=AESV2). AES-128 im CBC-Modus mit PKCS#7-Padding und einem zufälligen 16-Byte-Initialisierungsvektor gemäß ISO 32000-1 7.6.2 / 7.4.4.2 (PDF 1.6+). Seit HotPDF v2.4.0 verschlüsselt diese Option Strings und Streams mit einer echten AES-Implementierung; frühere Builds schrieben zwar das AES-Dictionary, verschlüsselten den Inhalt aber nicht tatsächlich.

aes256                  Standard Security Handler V=5 mit dem Crypt-Filter StdCF (CFM=AESV3). AES-256 im CBC-Modus mit PKCS#7-Padding und einem zufälligen 16-Byte-Initialisierungsvektor gemäß Adobe Extension Level 3 / ISO 32000-2 7.6.4 (PDF 1.7+, akzeptiert von Acrobat 9 und neuer, Foxit, Chrome und den Apple/macOS-Viewern). Verfügbar seit HotPDF v2.17.0. Wählen Sie aes256, wird die Ausgabeversion auf PDF 1.7 angehoben, wenn sie niedriger ist, es sei denn, StrictVersionLock ist gesetzt; dann fällt eine niedrigere Version auf AES-128 zurück (vor v2.760.0 fiel die Standardausgabe PDF 1.6 stillschweigend auf AES-128 zurück). Die Standardrevision ist R=5 mit SHA-256-Kennwort-Hashing. Setzen Sie UseAES256R6 auf true, um auf R=6 mit dem "Hash Dance" des Algorithmus 2.B aus ISO 32000-2 umzuschalten (SHA-256 / SHA-384 / SHA-512 + AES-128-Mixer); R=6 verlangen Acrobat DC und PDF/A-4-Validatoren. Verfügbar seit HotPDF v2.22.0.

aesgcm              Standard Security Handler V=6, R=7 mit dem Crypt-Filter StdCF (CFM=AESV4). AES-256-GCM verwendet für jeden verschlüsselten String und Stream einen eindeutigen 12-Byte-Initialisierungsvektor und ein 16-Byte-Authentifizierungs-Tag, mit leeren zusätzlichen authentifizierten Daten, wie in ISO/TS 32003:2023 definiert. Diese Option erfordert PDF 2.0 und schreibt die ISO-Developer-Extension auf Extension Level 32003. Verfügbar seit HotPDF v2.475.0.

 

Public-Key Security Handler (PDF 1.7 7.6.5)

Für zertifikatsbasierte Verschlüsselung (ein Dokument, mehrere Empfänger) rufen Sie EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) auf, statt UserPassword / OwnerPassword zu setzen. Die Public-Key-Verschlüsselung unterstützt k40, k128, aes128 und aes256 (aes256 hebt die Ausgabe auf PDF 2.0 an, und Empfänger mit Zertifikat oder Schlüsselvereinbarung setzen das voraus); aesgcm ist auf den kennwortbasierten Standard Security Handler beschränkt. Der Aufrufer muss pro Empfänger einen PKCS#7-EnvelopedData-Blob erzeugen (Windows CryptoAPI, OpenSSL oder pycryptodome) und jeden Blob über AddPubKeyRecipient anhängen; der Dateischlüssel wird wie in ISO 32000-1 7.6.4.3 beschrieben abgeleitet (SHA-1 über den Seed, verkettet mit den binären Envelopes). Verfügbar seit HotPDF v2.33.0.

 

Code Example

HPDF.Version := pdf20;                     // Select PDF 2.0
HPDF.CryptKeyLength := aesgcm;             // Select AES-256-GCM
HPDF.OwnerPassword := 'password';          // Set owner password (required to change security settings)
HPDF.UserPassword := 'user';               // Set user password (required to open the document)
HPDF.ProtectOptions := [prPrint, prPrint12bit]; // Allow full-quality printing only
HPDF.EncryptMetadata := false;             // Keep XMP metadata cleartext
HPDF.ActivateProtection := true;           // Enable PDF security

 

See also: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword