|
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
Para cifrado con contraseña AES, fije EncryptMetadata en false antes de BeginDoc para escribir /EncryptMetadata false, dejar los streams XMP /Metadata en claro y usar la derivación de clave AES-128 correspondiente o el flag de metadatos /Perms de AES-256. Por defecto es true por compatibilidad.
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. Al seleccionar aes256, la versión de salida se eleva a PDF 1.7 cuando es menor, salvo que StrictVersionLock esté establecido, en cuyo caso una versión menor 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 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
StdCF
Controlador de seguridad de clave pública (PDF 1.7 7.6.5)
Security Handler de clave pública (PDF 1.7 7.6.5)
Para el cifrado basado en certificados (un documento, varios destinatarios) llame a EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) en lugar de definir UserPassword / OwnerPassword. El cifrado de clave pública soporta k40, k128, aes128 y aes256 (aes256 eleva la salida a PDF 2.0, y los destinatarios basados en certificado o en key agreement lo requieren); aesgcm está limitado al security handler estándar basado en contraseña. Quien llama debe construir un blob PKCS#7 envelopedData por destinatario (Windows CryptoAPI, OpenSSL o pycryptodome) y agregar cada blob mediante AddPubKeyRecipient; la clave de cifrado del archivo se deriva por el algoritmo 9 (SHA-1 de la seed concatenada con los binarios del sobre). 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 := [prPrint, prPrint12bit]; // Allow full-quality printing only
HPDF.ActivateProtection := true; // Enable PDF security
Ver también: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword
|