Bir PDF dosyasını AES-256 ile şifreleyin ve izinleri ayarlayın
Bir bakışta
“Bir bakışta” başlıklı bölümBir belgeyi AES-256 ile şifrelemek için bu tarifi kullanın. Kullanıcı parolası, sahip parolası ve izin verilen işlemleri kısıtlayan bir izin bit maskesi ayarlarsınız. Bu tarif examples/22-protection.php dosyasını temel alır.
Yeniden üretilebilirlik — bu tarif neden
bitwisedeğil,structural. AES-256 ile şifrelenmiş bir PDF, aynı girdi ve parolalarla bile çalıştırmalar arasında bayt düzeyinde asla aynı değildir. Dosya şifreleme anahtarını türetmeden önce, revizyon 6 standart güvenlik işleyicisi her şifreleme işleminde güçlü bir rastgele sayı üreteci kullanarak 16 yeni rastgele bayt (user/owner doğrulama ve anahtar tuzları) üretir (ISO 32000-2 §7.6.4, Algoritma 2.B). AES-256-CBC, her nesne için rastgele bir başlatma vektörü kullanır. trailer’daki/IDde iki bayt dizesinden oluşan bir dizidir. İlk öğesi, oluşturma zamanında dosyadan türetilen kalıcı bir tanımlayıcıdır (ISO 32000-2 §14.4). Bu nedenle yeniden üretilebilirlik profilistructuralniteliktedir: harness, iki çalıştırmayı karşılaştırmadan önce imkânsız bir bayt eşleşmesi beklemek yerine şifreleme tuzlarını/IV’yi, nesne sırasını ve trailer/ID’yi kanonikleştirir.
Ön koşullar
“Ön koşullar” başlıklı bölüm- Core kurulu olmalıdır:
composer require nextpdf/core:^3. - AES-256 şifreleyicisinin gerektirdiği
opensslPHP uzantısı etkin olmalıdır.
- Belgeyi oluşturun.
- Önce
setEncryption(), sonraaddPage()çağırın. Herhangi bir içerik nesnesi yazılmadan önce şifreleyici hazır olmalıdır. - Bir kullanıcı parolası (belgeyi açmak için gereklidir), bir sahip parolası (tam erişim için) ve bir izin bit maskesi iletin.
- İçerik ekleyin ve kaydedin. Yazıcı her nesne gövdesini şifreler.
Tam örnek
“Tam örnek” başlıklı bölüm<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
// Permission bits (ISO 32000-2, encryption dictionary P entry):// bit 3 (4) allow printing// bit 4 (8) allow content modification// bit 5 (16) allow text extraction / copying// bit 6 (32) allow annotation and form editing// Grant printing only:$permissions = 4;
$doc = Document::createStandalone();$doc->setTitle('Encrypted Document');
// setEncryption() MUST run before addPage(). Order matters.$doc->setEncryption( userPassword: 'open-me', ownerPassword: 'owner-secret', permissions: $permissions,);
$doc->addPage();$doc->setFont('helvetica', '', 12);$doc->cell(0, 10, 'This document is encrypted with AES-256.', newLine: true);
$doc->save(__DIR__ . '/encrypted.pdf');
echo "Wrote encrypted.pdf (AES-256, printing only)\n";Beklenen çıktı
“Beklenen çıktı” başlıklı bölümWrote encrypted.pdf (AES-256, printing only)Oluşturulan encrypted.pdf dosyasını açtığınızda okuyucu parola ister. Kullanıcı parolası belgeyi kısıtlanmış izin kümesiyle açar. Sahip parolası ise belgeyi tam erişimle açar.
Sınır durumları
“Sınır durumları” başlıklı bölüm- Çağrı sırası.
setEncryption()işleviaddPage()işlevinden sonra çağrılırsa, daha önceki içeriği geriye dönük olarak şifrelemez. Şifrelemeyi her zaman önce yapılandırın. - Sahip parolası varsayılanı. Sahip parolası boş bırakıldığında, motor kullanıcı parolasını sahip parolası olarak yeniden kullanır. Bu rollerin farklı olması gerekiyorsa ayrı parolalar ayarlayın.
- İzin anlambilimi — sınır. Uyumlu okuyucular izin bitlerine uyar. Bu izinler kriptografik olarak zorunlu tutulmaz: bitleri yok sayan bir okuyucu veya sahip parolasıyla kullanılan bir araç, kısıtlanmış işlemleri gerçekleştirebilir. İzinleri, kararlı bir tarafa karşı dayanıklı bir erişim denetimi olarak değil, iş birliği yapan yazılımlar için bir ilke sinyali olarak değerlendirin.
- PDF/A çakışması. PDF/A, trailer’daki
Encryptanahtarını yasaklar. Bir PDF/A belgesindesetEncryption()işlevinin çağrılması, çağrı sırası ne olursa olsun bir uyumsuzluk istisnası fırlatır. PDF/A-4 uygunluk geçidi bölümüne bakın. - AES-256-GCM. Ana makinedeki OpenSSL veya libsodium şifreleme algoritmasını sağladığında,
useAesGcm()ISO/TS 32003 GCM toplu şifrelemesini etkinleştirir. Aksi durumdaInvalidConfigExceptionfırlatır.
Uygunluk
“Uygunluk” başlıklı bölüm| İfade | Spesifikasyon | Madde | reference_id |
|---|---|---|---|
| Standart güvenlik işleyicisi, şifreleme algoritmasını ve anahtar uzunluğunu tanımlar. | ISO 32000-2 | §7.6 | |
Şifreleme sözlüğünün P girdisi, izin bitlerini taşır. | ISO 32000-2 | §7.6 |
Şifreleme, içerik gizliliğini parolaya sahip olmayan taraflara karşı korur. İzin bitleri okuyuculara yol gösterir ve tek başlarına, uyumlu olmayan bir aracın işlem yapmasını engellemez.