|
Determina el método de cifrado del archivo PDF
type
THPDFKeyType = ( k40, k128, aes128, aes256 );
Sintaxis Delphi:
property CryptKeyLength: THPDFKeyType;
Sintaxis C++:
__property THPDFKeyType CryptKeyLength;
Descripción
Usa CryptKeyLength para elegir la revisión del controlador de seguridad estándar y el cifrado usados cuando ActivateProtection está habilitado
Value Meaning
k40 Controlador de seguridad estándar V=1, R=2, RC4 con una clave de 40 bits (PDF 1.1+)
k128 Standard security handler V=2, R=3, RC4 with a 128-bit key (PDF 1.4+).
aes128 Standard security handler V=4, R=4 with crypt filter StdCF (CFM=AESV2). AES-128 in CBC mode with PKCS#7 padding and a 16-byte random initialization vector per ISO 32000-1 7.6.2 / 7.4.4.2 (PDF 1.6+). Since HotPDF v2.4.0 this option encrypts strings and streams with a real AES implementation; earlier builds emitted the AES dictionary but did not actually encrypt content.
aes256 Controlador de seguridad estándar V=5 con filtro criptográfico 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. La revisión predeterminada es R=5 con hash de contraseña SHA-256. Configura UseAES256R6 en true para cambiar a R=6 con el algoritmo 2.B de ISO 32000-2, el "hash dance" (SHA-256 / SHA-384 / SHA-512 + mezclador AES-128); R=6 es necesario para Acrobat DC y validadores PDF/A-4. Disponible desde HotPDF v2.22.0
Controlador de seguridad de clave pública (PDF 1.7 7.6.5)
Para cifrado basado en certificados (un documento, varios destinatarios) llama a EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) en lugar de establecer UserPassword / OwnerPassword. Los mismos valores de CryptKeyLength se aplican al cifrado simétrico (k40 -> RC4-40 / V=1 + s4 SubFilter, k128 -> RC4-128 / V=2 + s5, aes128 -> AES-128 / V=4 + s5). El llamador debe construir un blob PKCS#7 envelopedData por destinatario (Windows CryptoAPI, OpenSSL o pycryptodome) y anexar cada blob mediante AddPubKeyRecipient; la clave de cifrado del archivo se deriva mediante el algoritmo 9 (SHA-1 de seed concatenado con los binarios del envelope). Disponible desde HotPDF v2.33.0
Ejemplo de código
HPDF.OwnerPassword := 'password'; // Set owner password (required to change security settings)
HPDF.UserPassword := 'user'; // Set user password (required to open the document)
HPDF.ProtectOptions := [poEdit, poAnnot]; // Disallow editing and annotations
HPDF.ActivateProtection := true; // Enable PDF security
Ver también: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword
|