THotPDF.CryptKeyLength Property

 

THotPDF.CryptKeyLength

THotPDF

 

Üst  Önceki  Sonraki

PDF dosya şifreleme yöntemini belirler.

 

type

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

 

Delphi sözdizimi:

property CryptKeyLength: THPDFKeyType;

 

C++ sözdizimi:

__property THPDFKeyType CryptKeyLength;

 

Açıklama

ActivateProtection etkin olduğunda kullanılacak standart güvenlik işleyici revizyonunu ve şifreyi seçmek için CryptKeyLength kullanın.

AES parola şifrelemesinde /EncryptMetadata false yazmak, XMP /Metadata stream'lerini düz metin bırakmak ve eşleşen AES-128 anahtar türetmesini ya da AES-256 /Perms üst veri bayrağını kullanmak için BeginDoc'tan önce EncryptMetadata'yı false yapın. Uyumluluk için varsayılan true'dur.

 

Değer                Anlam


k40                        Standard güvenlik işleyici V=1, R=2, 40 bitlik anahtarlı RC4 (PDF 1.1+).

k128                        Standard güvenlik işleyici V=2, R=3, 128 bitlik anahtarlı RC4 (PDF 1.4+).

aes128                  Standard güvenlik işleyici V=4, R=4, crypt filter StdCF ile (CFM=AESV2). ISO 32000-1 7.6.2 / 7.4.4.2 uyarınca PKCS#7 dolgusu ve 16 baytlık rastgele başlatma vektörüyle CBC kipinde AES-128 (PDF 1.6+). HotPDF v2.4.0'dan beri bu seçenek dizeleri ve stream'leri gerçek bir AES uygulamasıyla şifreler; daha eski derlemeler AES sözlüğünü yazdı ama içeriği fiilen şifrelemedi.

aes256                  Crypt filter StdCF ile (CFM=AESV3) Standard güvenlik işleyici V=5. Adobe Extension Level 3 / ISO 32000-2 7.6.4 uyarınca PKCS#7 dolgusu ve 16 baytlık rastgele başlatma vektörüyle CBC kipinde AES-256 (PDF 1.7+; Acrobat 9 ve sonrası, Foxit, Chrome ve Apple/macOS okuyucuları kabul eder). HotPDF v2.17.0'dan beri mevcut. aes256 seçildiğinde çıktı sürümü daha düşükse PDF 1.7'ye yükselir; StrictVersionLock ayarlıysa daha düşük sürüm AES-128'e geri düşer (v2.760.0'dan önce varsayılan PDF 1.6 çıktısı sessizce AES-128'e düşüyordu). Varsayılan revizyon, SHA-256 parola özetlemeli R=5'tir. ISO 32000-2 algoritma 2.B "hash dance"ine (SHA-256 / SHA-384 / SHA-512 + AES-128 karıştırıcı) geçmek için UseAES256R6'yı true yapın; R=6, Acrobat DC ve PDF/A-4 doğrulayıcıları tarafından zorunludur. HotPDF v2.22.0'dan beri mevcut.

aesgcm              Crypt filter StdCF ile (CFM=AESV4) Standard güvenlik işleyici V=6, R=7. AES-256-GCM; ISO/TS 32003:2023'ün tanımladığı üzere, boş ek kimlik doğrulama verisiyle, şifrelenen her dize ve stream için benzersiz bir 12 baytlık başlatma vektörü ve 16 baytlık kimlik doğrulama etiketi kullanır. Bu seçenek PDF 2.0 gerektirir ve 32003 eklenti düzeyinde ISO geliştirici uzantısını yazar. HotPDF v2.475.0'dan beri mevcut.

 

Genel anahtar güvenlik işleyicisi (ISO 32000-1 7.6.4, ISO 32000-2 7.6.5)

Sertifika tabanlı şifrelemede (tek belge, çok alıcı) UserPassword / OwnerPassword ayarlamak yerine EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) çağırın. Genel anahtar şifrelemesi k40, k128, aes128 ve aes256 değerlerini destekler (aes256 çıktıyı PDF 2.0'a yükseltir ve sertifika ya da key-agreement alıcıları bunu gerektirir); aesgcm parola tabanlı standart güvenlik işleyicisiyle sınırlıdır. Çağıran, her alıcı için bir PKCS#7 envelopedData blob'u kurmalı (Windows CryptoAPI, OpenSSL veya pycryptodome) ve her blob'u AddPubKeyRecipient üzerinden eklemelidir; dosya şifreleme anahtarı, ISO 32000-1 7.6.4.3'te açıklandığı gibi türetilir (tohumun zarf ikili verileriyle bitiştirilmiş hâlinin SHA-1'i). HotPDF v2.33.0'dan beri mevcut.

 

Kod Örneği

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

 

Ayrıca bkz.: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword