|
Determines PDF file encryption method.
type
THPDFKeyType = ( k40, k128, aes128, aes256 );
Delphi syntax:
property CryptKeyLength: THPDFKeyType;
C++ syntax:
__property THPDFKeyType CryptKeyLength;
Opis
Użyj CryptKeyLength, aby wybrać rewizję standardowej procedury obsługi zabezpieczeń i szyfr używany po włączeniu ActivateProtection
Dla szyfrowania hasłem AES ustaw EncryptMetadata na false przed BeginDoc, by zapisać /EncryptMetadata false, zostawić strumienie XMP /Metadata w czystym tekście i użyć pasującego wyprowadzania klucza AES-128 albo flagi metadanych AES-256 /Perms. Domyślnie true dla kompatybilności.
Value Meaning
k40 Standard security handler V=1, R=2, RC4 with a 40-bit key (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 Standardowy handler bezpieczeństwa V=5 z filtrem crypt StdCF (CFM=AESV3). AES-256 w trybie CBC z dopełnieniem PKCS#7 i 16-bajtowym losowym wektorem inicjalizacji według Adobe Extension Level 3 / ISO 32000-2 7.6.4 (PDF 1.7+, akceptowany przez Acrobat 9 i nowsze, Foxit, Chrome oraz przeglądarki Apple/macOS). Dostępne od HotPDF v2.17.0. Wybranie aes256 podnosi wersję wyjściową do PDF 1.7, gdy jest niższa, chyba że ustawiono StrictVersionLock — wtedy niższa wersja cofa się do AES-128 (przed v2.760.0 domyślne wyjście PDF 1.6 po cichu cofało się do AES-128). Domyślna rewizja to R=5 z hashowaniem haseł SHA-256. Ustaw UseAES256R6 na true, by przełączyć na R=6 z algorytmem 2.B "hash dance" z ISO 32000-2 (SHA-256 / SHA-384 / SHA-512 + mikser AES-128); R=6 wymagają Acrobat DC i walidatory PDF/A-4. Dostępne od HotPDF v2.22.0
aesgcm Standardowy handler bezpieczeństwa V=6, R=7 z filtrem crypt StdCF (CFM=AESV4). AES-256-GCM używa unikalnego 12-bajtowego wektora inicjalizacji i 16-bajtowego taga uwierzytelniającego dla każdego zaszyfrowanego ciągu i strumienia, z pustymi dodatkowymi danymi uwierzytelniania, zgodnie z ISO/TS 32003:2023. Ta opcja wymaga PDF 2.0 i emituje rozszerzenie deweloperskie ISO na poziomie rozszerzenia 32003. Dostępne od HotPDF v2.475.0.
Public-Key Security Handler (PDF 1.7 7.6.5)
Dla szyfrowania opartego na certyfikatach (jeden dokument, wielu odbiorców) wołaj EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) zamiast ustawiać UserPassword / OwnerPassword. Szyfrowanie kluczem publicznym obsługuje k40, k128, aes128 i aes256 (aes256 podnosi wyjście do PDF 2.0, a wymagają go odbiorcy certyfikatowi oraz key-agreement); aesgcm jest ograniczone do hasłowego standardowego handlera bezpieczeństwa. Wywołujący musi zbudować po jednym blobie PKCS#7 envelopedData na odbiorcę (Windows CryptoAPI, OpenSSL albo pycryptodome) i dokleić każdy blob przez AddPubKeyRecipient; klucz szyfrowania pliku wyprowadzany jest jak opisano w ISO 32000-1 7.6.4.3 (SHA-1 z seeda skleconego z binarnymi kopertami). Dostępne od HotPDF v2.33.0.
Code Example
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
Zobacz też: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword
|