Zamknutí prezentací heslem v Javě

Přehled

Otevírací heslo šifruje prezentaci. Správné heslo je vyžadováno pro načtení a zobrazení obsahu prezentace, takže tato ochrana poskytuje důvěrnost.

Otevírací heslo se liší od hesla pro ochranu proti zápisu. Ochrana proti zápisu omezuje úpravy, ale nešifruje obsah ani nebrání načtení prezentace. Pro správu hesel pro úpravy prezentací viz Zamknout prezentace.

Níže uvedené postupy platí jak pro PPT, tak pro PPTX prezentace. Příklady používají oba formáty, kde je důležité chování založené na souboru i na proudu.

Šifrování prezentace otevíracím heslem

Použijte IProtectionManager.encrypt k přiřazení otevíracího hesla. Poté použijte IPresentation.save k uložení šifrované prezentace.

Následující příklad šifruje PPTX prezentaci:

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();
}

Zveřejnit vlastnosti dokumentu

Ve výchozím nastavení zahrnuje Aspose.Slides vlastnosti dokumentu do šifrování prezentace. Metoda IProtectionManager.setEncryptDocumentProperties řídí toto chování nezávisle na šifrování obsahu snímků. Před voláním IProtectionManager.encrypt předávejte false, pokud musí systém pro indexování, klasifikaci, vyhledávání nebo správu dokumentů číst metadata bez otevíracího hesla.

Následující příklad vytvoří šifrovanou PPTX prezentaci a zároveň ponechá její vestavěné vlastnosti dokumentu veřejné:

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();
}

Předání false metodě IProtectionManager.setEncryptDocumentProperties nezpřístupní snímky, hlavní motivy, rozvržení, tvary, média ani jiný obsah prezentace. Ovlivní pouze vlastnosti dokumentu. Pro čtení těchto vlastností bez načítání šifrovaného obsahu viz Spravovat vlastnosti prezentace.

Načtení šifrované prezentace

Nastavte ILoadOptions.setPassword na otevírací heslo a předávejte volby při vytváření Presentation při načítání souboru. Načítání selže, pokud je vyžadováno otevírací heslo a zadané heslo chybí nebo je nesprávné.

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 {
    // Pracujte s dešifrovanou prezentací.
} finally {
    presentation.dispose();
}

Odstranění šifrování z prezentace

Načtěte prezentaci s jejím otevíracím heslem, zavolejte IProtectionManager.removeEncryption a výsledek uložte. Uložená prezentace může být následně načtena bez hesla.

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();
}

Ověření otevíracího hesla před načtením

Použijte IPresentationFactory.getPresentationInfo k získání IPresentationInfo bez vytváření kompletní instance prezentace. Zkontrolujte IPresentationInfo.isPasswordProtected před požádáním o heslo nebo jeho ověřením. Pokud je ochrana přítomna, ověřte zadanou hodnotu pomocí IPresentationInfo.checkPassword.

Postup s cestou k souboru

Následující příklad ověří otevírací heslo pro soubor PPTX, předá ověřenou hodnotu metodě ILoadOptions.setPassword a poté načte kompletní prezentaci:

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();
    }
}

Postup s proudem

Přetížená metoda proudu IPresentationFactory.getPresentationInfo poskytuje stejný postup. Před načtením kompletní prezentace z proudu resetujte pozici seekable proudu.

Následující příklad používá soubor 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();
}

Návratové hodnoty metody checkPassword

IPresentationInfo.checkPassword vrací true pouze tehdy, když má prezentace otevírací heslo a zadané heslo je správné. Vrací false ve všech následujících případech:

  • Heslo je nesprávné.
  • Prezentace nemá otevírací heslo.
  • Zadané heslo je null nebo prázdné.

Chování je stejné pro PPT i PPTX prezentace.

Zkontrolovat, zda načtená prezentace je šifrovaná

Po načtení prezentace se správným heslem zkontrolujte IProtectionManager.isEncrypted pro potvrzení, že zdrojová prezentace byla šifrována. Pro detekci ochrany otevíracím heslem před načtením použijte IPresentationInfo.isPasswordProtected, jak je ukázáno výše.

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();
}

Doporučení pro zabezpečení

Zamknout prezentaci heslem online

  1. Otevřete aplikaci Aspose.Slides Lock.
  2. Vyberte nebo nahrajte prezentaci.
  3. Zadejte heslo pro ochranu zobrazení.
  4. Volitelně zadejte samostatné heslo pro ochranu úprav.
  5. Aplikujte ochranu a stáhněte výsledný soubor.

Často kladené otázky

Jaký je rozdíl mezi otevíracím heslem a heslem pro ochranu proti zápisu?

Otevírací heslo šifruje prezentaci a je vyžadováno pro načtení jejího obsahu. Heslo pro ochranu proti zápisu omezuje úpravy bez šifrování obsahu.

Mohu ověřit otevírací heslo bez načtení všech snímků?

Ano. Získejte informace o prezentaci, zjistěte, zda je přítomna ochrana otevíracím heslem, a ověřte heslo před vytvořením kompletní instance prezentace.

Může aplikace číst metadata bez otevíracího hesla?

Ano, ale pouze pokud byla prezentace šifrována s vypnutým šifrováním vlastností dokumentu. Aplikace pak musí použít režim načítání pouze vlastností dokumentu popsaný v Spravovat vlastnosti prezentace.

Podporují postupy pro kontrolu hesla jak PPT, tak PPTX?

Ano. Detekce a ověření hesla na základě cesty k souboru i proudu se chovají stejně u PPT i PPTX prezentací.