Melindungi Presentasi dengan Password di Java

Gambaran Umum

Password pembuka mengenkripsi sebuah presentasi. Password yang benar diperlukan untuk memuat dan melihat konten presentasi, sehingga perlindungan ini memberikan kerahasiaan.

Password pembuka berbeda dari password perlindungan tulis. Perlindungan tulis membatasi modifikasi tetapi tidak mengenkripsi konten atau mencegah presentasi dimuat. Untuk mengelola password untuk memodifikasi presentasi, lihat Write-Protect Presentations.

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

Enkripsi Presentasi dengan Password Pembuka

Gunakan IProtectionManager.encrypt untuk menetapkan password pembuka. Kemudian gunakan IPresentation.save untuk menyimpan presentasi yang terenkripsi.

Contoh berikut mengenkripsi presentasi PPTX:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation 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 IProtectionManager.setEncryptDocumentProperties mengontrol perilaku ini secara terpisah dari enkripsi konten slide. Berikan false sebelum memanggil IProtectionManager.encrypt ketika sistem pengindeksan, klasifikasi, pencarian, atau manajemen dokumen harus membaca metadata tanpa password pembuka.

Contoh berikut membuat presentasi PPTX terenkripsi sambil membiarkan properti dokumen bawaan tetap publik:

import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation();
try {
    IDocumentProperties 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();
}

Menyetel false pada IProtectionManager.setEncryptDocumentProperties tidak membuat slide, master, tata letak, bentuk, media, atau konten presentasi lainnya menjadi publik. Ini hanya memengaruhi properti dokumen. Untuk membaca properti tersebut tanpa memuat konten terenkripsi, lihat Manage Presentation Properties.

Muat Presentasi yang Terenkripsi

Atur ILoadOptions.setPassword ke password pembuka dan berikan opsi tersebut ke Presentation saat memuat file. Pemuatan gagal ketika password pembuka diperlukan tetapi password yang diberikan tidak ada atau salah.

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

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

Hapus Enkripsi dari Presentasi

Muat presentasi dengan password pembukanya, panggil IProtectionManager.removeEncryption, dan simpan hasilnya. Presentasi yang disimpan kemudian dapat dimuat tanpa password.

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

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

Validasi Password Pembuka Sebelum Memuat

Gunakan IPresentationFactory.getPresentationInfo untuk memperoleh IPresentationInfo tanpa membuat instance presentasi lengkap. Periksa IPresentationInfo.isPasswordProtected sebelum meminta atau memvalidasi password. Ketika perlindungan ada, validasi nilai yang diberikan dengan IPresentationInfo.checkPassword.

Alur Kerja Jalur Berkas

Contoh berikut memvalidasi password pembuka untuk file PPTX, mengirim nilai yang telah divalidasi ke ILoadOptions.setPassword, dan kemudian memuat presentasi lengkap:

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;

String filePath = "protected-presentation.pptx";
String password = "open_password";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(filePath);

if (!presentationInfo.isPasswordProtected()) {
    System.out.println("The presentation does not have an opening password.");
} else if (!presentationInfo.checkPassword(password)) {
    System.out.println("The opening password is incorrect.");
} else {
    LoadOptions loadOptions = new LoadOptions();
    loadOptions.setPassword(password);

    Presentation presentation = new Presentation(filePath, loadOptions);
    try {
        System.out.println("The presentation was validated and loaded successfully.");
    } finally {
        presentation.dispose();
    }
}

Alur Kerja Aliran

Versi overload aliran dari IPresentationFactory.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:

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;
import java.io.FileInputStream;

String password = "open_password";

FileInputStream presentationStream = new FileInputStream("protected-presentation.ppt");
try {
    IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(presentationStream);

    if (!presentationInfo.isPasswordProtected()) {
        System.out.println("The presentation does not have an opening password.");
    } else if (!presentationInfo.checkPassword(password)) {
        System.out.println("The opening password is incorrect.");
    } else {
        presentationStream.getChannel().position(0);

        LoadOptions loadOptions = new LoadOptions();
        loadOptions.setPassword(password);

        Presentation presentation = new Presentation(presentationStream, loadOptions);
        try {
            System.out.println("The presentation was validated and loaded successfully.");
        } finally {
            presentation.dispose();
        }
    }
} finally {
    presentationStream.close();
}

Nilai Kembalian checkPassword

IPresentationInfo.checkPassword mengembalikan true hanya ketika presentasi memiliki password pembuka dan password yang diberikan benar. Itu mengembalikan false pada setiap kasus berikut:

  • Password salah.
  • Presentasi tidak memiliki password pembuka.
  • Password yang diberikan null atau kosong.

Perilaku ini sama untuk presentasi PPT dan PPTX.

Periksa Apakah Presentasi yang Dimuat Terkenkripsi

Setelah memuat presentasi dengan password yang benar, periksa IProtectionManager.isEncrypted untuk memastikan bahwa presentasi sumber terenkripsi. Untuk mendeteksi perlindungan password pembuka sebelum memuat, gunakan IPresentationInfo.isPasswordProtected seperti yang ditunjukkan di atas.

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    boolean isEncrypted = presentation.getProtectionManager().isEncrypted();
    System.out.println("The presentation is encrypted: " + isEncrypted);
} finally {
    presentation.dispose();
}

Rekomendasi Keamanan

Lindungi Presentasi dengan Password Secara Online

  1. Buka aplikasi Aspose.Slides Lock.
  2. Pilih atau unggah presentasi.
  3. Masukkan password untuk perlindungan tampilan.
  4. Opsional, masukkan password terpisah untuk perlindungan pengeditan.
  5. Terapkan perlindungan dan unduh berkas yang dihasilkan.

FAQ

Apa perbedaan antara password pembuka dan password perlindungan tulis?

Password pembuka mengenkripsi presentasi dan diperlukan untuk memuat kontennya. Password perlindungan tulis membatasi modifikasi tanpa mengenkripsi konten.

Bisakah saya memvalidasi password pembuka tanpa memuat semua slide?

Ya. Dapatkan informasi presentasi, periksa apakah perlindungan password pembuka ada, dan validasi password sebelum membuat instance presentasi lengkap.

Apakah aplikasi dapat membaca metadata tanpa password pembuka?

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

Apakah alur kerja pengecekan password mendukung PPT dan PPTX?

Ya. Deteksi dan validasi password berbasis jalur berkas maupun aliran berperilaku sama untuk presentasi PPT dan PPTX.