Presentasi yang Dilindungi Kata Sandi di PHP

Ikhtisar

Kata sandi pembuka mengenkripsi presentasi. Kata sandi yang benar diperlukan untuk memuat dan melihat konten presentasi, sehingga perlindungan ini menyediakan kerahasiaan.

Kata sandi pembuka berbeda dari kata sandi perlindungan penulisan. Perlindungan penulisan membatasi modifikasi tetapi tidak mengenkripsi konten atau mencegah presentasi dimuat. Untuk mengelola kata sandi bagi modifikasi presentasi, lihat Write-Protect Presentations.

Alur kerja di bawah ini berlaku untuk presentasi PPT dan PPTX. Contoh-contoh menggunakan kedua format ketika perilaku berbasis file dan berbasis aliran penting.

Enkripsi Presentasi dengan Kata Sandi Pembuka

Gunakan ProtectionManager::encrypt untuk menetapkan kata sandi pembuka. Kemudian gunakan Presentation::save untuk menyimpan presentasi yang telah dienkripsi.

Contoh berikut mengenkripsi presentasi PPTX:

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("pres.pptx");
try {
    $presentation->getProtectionManager()->encrypt("open_password");
    $presentation->save("encrypted-pres.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Biarkan Properti Dokumen Publik

Secara default, Aspose.Slides menyertakan properti dokumen dalam enkripsi presentasi. Metode ProtectionManager::setEncryptDocumentProperties mengontrol perilaku ini secara terpisah dari enkripsi konten slide. Berikan false sebelum memanggil ProtectionManager::encrypt ketika sistem pengindeksan, klasifikasi, pencarian, atau manajemen dokumen harus membaca metadata tanpa kata sandi pembuka.

Contoh berikut membuat presentasi PPTX yang dienkripsi sekaligus membiarkan properti dokumen bawaan tetap publik:

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $properties = $presentation->getDocumentProperties();
    $properties->setAuthor("Contoso Knowledge Management");
    $properties->setTitle("Quarterly Product Roadmap");
    $properties->setKeywords("roadmap, planning, internal");

    $presentation->getSlides()->get_Item(0)->setName("Encrypted presentation content");
    $presentation->getProtectionManager()->setEncryptDocumentProperties(false);
    $presentation->getProtectionManager()->encrypt("open_password");
    $presentation->save("public-properties-encrypted.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Memberikan false ke ProtectionManager::setEncryptDocumentProperties tidak membuat slide, master, layout, shape, media, atau konten presentasi lainnya menjadi publik. Ini hanya memengaruhi properti dokumen. Untuk membaca properti tersebut tanpa memuat konten yang dienkripsi, lihat Manage Presentation Properties.

Muat Presentasi yang Dienkripsi

Setel LoadOptions::setPassword ke kata sandi pembuka dan berikan opsi tersebut ke Presentation saat memuat file. Pemuatan gagal ketika kata sandi pembuka diperlukan tetapi kata sandi yang diberikan tidak ada atau salah.

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;

$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");

$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
    # Bekerja dengan presentasi yang telah didekripsi.
} finally {
    $presentation->dispose();
}

Hapus Enkripsi dari Presentasi

Muat presentasi dengan kata sandi pembukanya, panggil ProtectionManager::removeEncryption, dan simpan hasilnya. Presentasi yang disimpan kemudian dapat dimuat tanpa kata sandi.

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");

$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
    $presentation->getProtectionManager()->removeEncryption();
    $presentation->save("encryption-removed.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Validasi Kata Sandi Pembuka Sebelum Memuat

Gunakan PresentationFactory::getPresentationInfo untuk memperoleh PresentationInfo tanpa membuat instansi presentasi lengkap. Periksa PresentationInfo::isPasswordProtected sebelum meminta atau memvalidasi kata sandi. Ketika perlindungan ada, validasi nilai yang diberikan dengan PresentationInfo::checkPassword.

Alur Kerja Jalur Berkas

Contoh berikut memvalidasi kata sandi pembuka untuk file PPTX, meneruskan nilai yang telah divalidasi ke LoadOptions::setPassword, dan kemudian memuat presentasi lengkap:

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationFactory;

$filePath = "protected-presentation.pptx";
$password = "open_password";
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($filePath);

if (!$presentationInfo->isPasswordProtected()) {
    echo("The presentation does not have an opening password.\n");
} elseif (!$presentationInfo->checkPassword($password)) {
    echo("The opening password is incorrect.\n");
} else {
    $loadOptions = new LoadOptions();
    $loadOptions->setPassword($password);

    $presentation = new Presentation($filePath, $loadOptions);
    try {
        echo("The presentation was validated and loaded successfully.\n");
    } finally {
        $presentation->dispose();
    }
}

Alur Kerja Aliran

Overload aliran dari PresentationFactory::getPresentationInfo menyediakan alur kerja yang sama. Atur ulang posisi aliran yang dapat dicari sebelum memuat presentasi lengkap dari aliran tersebut.

Contoh berikut menggunakan file PPT:

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationFactory;

$password = "open_password";

$presentationStream = new Java("java.io.FileInputStream", "protected-presentation.ppt");
try {
    $presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($presentationStream);

    if (!$presentationInfo->isPasswordProtected()) {
        echo("The presentation does not have an opening password.\n");
    } elseif (!$presentationInfo->checkPassword($password)) {
        echo("The opening password is incorrect.\n");
    } else {
        $presentationStream->getChannel()->position(0);

        $loadOptions = new LoadOptions();
        $loadOptions->setPassword($password);

        $presentation = new Presentation($presentationStream, $loadOptions);
        try {
            echo("The presentation was validated and loaded successfully.\n");
        } finally {
            $presentation->dispose();
        }
    }
} finally {
    $presentationStream->close();
}

Nilai Kembalian checkPassword

PresentationInfo::checkPassword mengembalikan true hanya ketika presentasi memiliki kata sandi pembuka dan kata sandi yang diberikan benar. Ia mengembalikan false dalam masing‑masing kasus berikut:

  • Kata sandi salah.
  • Presentasi tidak memiliki kata sandi pembuka.
  • Kata sandi yang diberikan null atau kosong.

Perilaku ini sama untuk presentasi PPT dan PPTX.

Periksa Apakah Presentasi yang Dimuat Telah Dienkripsi

Setelah memuat presentasi dengan kata sandi yang benar, periksa ProtectionManager::isEncrypted untuk memastikan bahwa presentasi sumber dienkripsi. Untuk mendeteksi perlindungan kata sandi pembuka sebelum memuat, gunakan PresentationInfo::isPasswordProtected seperti dijelaskan di atas.

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;

$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");

$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
    $isEncrypted = $presentation->getProtectionManager()->isEncrypted();
    echo("The presentation is encrypted: " . ($isEncrypted ? "true" : "false") . "\n");
} finally {
    $presentation->dispose();
}

Rekomendasi Keamanan

Lindungi Presentasi dengan Kata Sandi Secara Online

  1. Buka aplikasi Aspose.Slides Lock.
  2. Pilih atau unggah presentasi.
  3. Masukkan kata sandi untuk perlindungan tampilan.
  4. Secara opsional masukkan kata sandi terpisah untuk perlindungan penyuntingan.
  5. Terapkan perlindungan dan unduh berkas yang dihasilkan.

Tanya Jawab

Apa perbedaan antara kata sandi pembuka dan kata sandi perlindungan penulisan?

Kata sandi pembuka mengenkripsi presentasi dan diperlukan untuk memuat kontennya. Kata sandi perlindungan penulisan membatasi modifikasi tanpa mengenkripsi konten.

Apakah saya dapat memvalidasi kata sandi pembuka tanpa memuat semua slide?

Ya. Dapatkan informasi presentasi, periksa apakah perlindungan kata sandi pembuka ada, dan validasi kata sandi sebelum membuat instansi presentasi lengkap.

Bisakah sebuah aplikasi membaca metadata tanpa kata sandi pembuka?

Ya, tetapi hanya ketika presentasi dienkripsi dengan enkripsi properti dokumen dinonaktifkan. Aplikasi harus kemudian menggunakan mode pemuatan hanya properti dokumen yang dijelaskan dalam Manage Presentation Properties.

Apakah alur kerja pemeriksaan kata sandi mendukung PPT dan PPTX?

Ya. Deteksi dan validasi kata sandi berbasis jalur berkas dan aliran berperilaku sama untuk presentasi PPT dan PPTX.