|
يحدد أسلوب تشفير ملف PDF
النوع
THPDFKeyType = ( k40, k128, aes128, aes256, aesgcm );
صيغة Delphi:
property CryptKeyLength: THPDFKeyType;
صيغة C++:
__property THPDFKeyType CryptKeyLength;
الوصف
استخدم CryptKeyLength لاختيار مراجعة معالج الأمان القياسي والتشفير المستخدَم عند تفعيل ActivateProtection
لتشفير AES بكلمة المرور، اضبط EncryptMetadata على false قبل BeginDoc لكتابة /EncryptMetadata false وإبقاء تدفقات XMP /Metadata بنص واضح، مع استخدام اشتقاق مفتاح AES-128 المطابق أو علامة البيانات الوصفية /Perms الخاصة بـ AES-256. والقيمة الافتراضية true من أجل التوافق
القيمة المعنى
k40 معالج الأمان القياسي V=1, R=2 بتشفير RC4 بمفتاح 40-بت (PDF 1.1+)
k128 معالج الأمان القياسي V=2, R=3 بتشفير RC4 بمفتاح 128-بت (PDF 1.4+)
aes128 معالج الأمان القياسي V=4, R=4 مع مرشح التشفير StdCF (CFM=AESV2). ويُستخدم AES-128 في نمط CBC مع حشو PKCS#7 ومتجه تهيئة عشوائي من 16 بايتًا وفق ISO 32000-1 7.6.2 / 7.4.4.2 (PDF 1.6+). ومنذ HotPDF v2.4.0 يشفّر هذا الخيار السلاسل والتدفقات بتنفيذ AES حقيقي؛ أما الإصدارات الأقدم فكانت تكتب قاموس AES دون تشفير المحتوى فعليًا
aes256 معالج الأمن القياسي V=5 مع مرشح التشفير StdCF (CFM=AESV3). AES-256 في نمط CBC مع حشو PKCS#7 ومتجه تهيئة عشوائي من 16 بايتًا وفق Adobe Extension Level 3 / ISO 32000-2 7.6.4 (PDF 1.7+، مقبول لدى Acrobat 9 وما بعدها وFoxit وChrome وعارضات Apple/macOS). متاح منذ HotPDF v2.17.0. اختيار aes256 يرفع إصدار المخرجات إلى PDF 1.7 عندما يكون أدنى، ما لم يكن StrictVersionLock مضبوطًا فيعود الإصدار الأدنى إلى AES-128 (وقبل v2.760.0 كانت مخرجات PDF 1.6 الافتراضية تعود إلى AES-128 بصمت). المراجعة الافتراضية هي R=5 مع hashing لكلمات المرور بـ SHA-256. اضبط UseAES256R6 على true للتحويل إلى R=6 بخوارزمية ISO 32000-2 2.B ("hash dance") (SHA-256 / SHA-384 / SHA-512 + خالط AES-128)؛ وتشترط Acrobat DC ومدقّقات PDF/A-4 استخدام R=6. متاح منذ HotPDF v2.22.0
aesgcm معالج الأمان القياسي V=6, R=7 مع مرشح التشفير StdCF (CFM=AESV4). يستخدم AES-256-GCM متجه تهيئة فريدًا من 12 بايتًا وبطاقة مصادقة من 16 بايتًا لكل سلسلة وتدفق يُشفَّر، مع بيانات مصادقة إضافية فارغة، كما يعرّفه ISO/TS 32003:2023. ويتطلب هذا الخيار PDF 2.0 ويكتب امتداد المطوّر الخاص بـ ISO عند مستوى الامتداد 32003. متاح منذ HotPDF v2.475.0
معالج أمن المفتاح العام (ISO 32000-1 7.6.4، ISO 32000-2 7.6.5)
للتشفير المبني على الشهادات (مستند واحد ومستلمون متعددون) استدعِ EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) بدلًا من ضبط UserPassword / OwnerPassword. يدعم تشفير المفتاح العام k40 وk128 وaes128 وaes256 (ويرفع aes256 المخرجات إلى PDF 2.0، ويشترطه المستلمون المعتمدون على الشهادات أو على اتفاق المفاتيح)؛ ويقتصر aesgcm على معالج الأمن القياسي المبني على كلمة المرور. وعلى المستدعي بناء كتلة واحدة من نوع PKCS#7 envelopedData لكل مستلم (عبر Windows CryptoAPI أو OpenSSL أو pycryptodome) وإلحاق كل كتلة عبر AddPubKeyRecipient؛ ويُشتق مفتاح تشفير الملف كما هو موصوف في ISO 32000-1 بند 7.6.4.3 (SHA-1 للبذرة الملاصقة للثنائيات المُظروفية). متاح منذ 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
انظر أيضًا: ActivateProtection, OwnerPassword, ProtectOptions, UserPassword
|