THotPDF.CryptKeyLength Property

 

THotPDF.CryptKeyLength

THotPDF

 

Top  Previous  Next

Determina el método de cifrado del archivo PDF.

 

type

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

 

Sintaxis Delphi:

property CryptKeyLength: THPDFKeyType;

 

Sintaxis C++:

__property THPDFKeyType CryptKeyLength;

 

Descripción

Use CryptKeyLength para elegir la revisión del manejador de seguridad estándar y el cifrado que se usan cuando ActivateProtection está habilitada.

Para el cifrado con contraseña AES, asigne EncryptMetadata a false antes de BeginDoc para escribir /EncryptMetadata false, dejar los streams /Metadata XMP en claro y usar la derivación de clave AES-128 correspondiente o la marca de metadatos /Perms de AES-256. Por compatibilidad, el valor por defecto es true.

 

Valor                Significado


k40                        Manejador de seguridad estándar V=1, R=2, RC4 con clave de 40 bits (PDF 1.1+).

k128                        Manipulador de seguridad estándar V=2, R=3, RC4 con clave de 128 bits (PDF 1.4+).

aes128                  Standard security handler V=4, R=4 con el crypt filter StdCF (CFM=AESV2). AES-128 en modo CBC con relleno PKCS#7 y un vector de inicialización aleatorio de 16 bytes por cada cifrado, según ISO 32000-1 7.6.2 / 7.4.4.2 (PDF 1.6+). Desde HotPDF v2.4.0 esta opción cifra cadenas y streams con una implementación AES real; las compilaciones anteriores emitían el diccionario AES pero no cifraban realmente el contenido.

aes256                  Manipulador de seguridad estándar V=5 con crypt filter StdCF (CFM=AESV3). AES-256 en modo CBC con relleno PKCS#7 y un vector de inicialización aleatorio de 16 bytes según Adobe Extension Level 3 / ISO 32000-2 7.6.4 (PDF 1.7+, aceptado por Acrobat 9 y posteriores, Foxit, Chrome y los visores de Apple/macOS). Disponible desde HotPDF v2.17.0. Al seleccionar aes256, la versión de salida sube a PDF 1.7 cuando es inferior, salvo que StrictVersionLock esté activado, en cuyo caso una versión inferior recurre a AES-128 (antes de v2.760.0 la salida PDF 1.6 por defecto recurría a AES-128 en silencio). La revisión por defecto es R=5 con hash de contraseñas SHA-256. Asigne UseAES256R6 a true para cambiar a R=6 con el algoritmo 2.B de ISO 32000-2 "hash dance" (SHA-256 / SHA-384 / SHA-512 + mezclador AES-128); R=6 es obligatorio para Acrobat DC y los validadores PDF/A-4. Disponible desde HotPDF v2.22.0

aesgcm              Manipulador de seguridad estándar V=6, R=7 con crypt filter StdCF (CFM=AESV4). AES-256-GCM usa un vector de inicialización único de 12 bytes y una etiqueta de autenticación de 16 bytes para cada cadena y stream cifrados, con additional authenticated data vacío, según define ISO/TS 32003:2023. Esta opción exige PDF 2.0 y emite la extensión de desarrollador ISO en el nivel de extensión 32003. Disponible desde HotPDF v2.475.0.

 

Manipulador de seguridad de clave pública (ISO 32000-1 7.6.4, ISO 32000-2 7.6.5)

Para el cifrado basado en certificados (un documento, varios destinatarios) llame a EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) en lugar de asignar UserPassword / OwnerPassword. El cifrado de clave pública soporta k40, k128, aes128 y aes256 (aes256 sube la salida a PDF 2.0, y los destinatarios de certificado o de key-agreement lo exigen); aesgcm se limita al manipulador de seguridad estándar basado en contraseña. El llamador debe construir un blob PKCS#7 envelopedData por destinatario (Windows CryptoAPI, OpenSSL o pycryptodome) y añadir cada blob mediante AddPubKeyRecipient; la clave de cifrado del archivo se deduce como describe ISO 32000-1 7.6.4.3 (SHA-1 de la seed concatenada con los binarios del sobre). Disponible desde 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

 

Véase también: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword