Presentaties met wachtwoord beveiligen in Python
Overzicht
Een openingswachtwoord versleutelt een presentatie. Het juiste wachtwoord is vereist om de presentatie‑inhoud te laden en weer te geven, waardoor deze bescherming vertrouwelijkheid biedt.
Een openingswachtwoord verschilt van een schrijfbeschermingswachtwoord. Schrijfbescherming beperkt bewerken, maar versleutelt de inhoud niet en verhindert niet dat de presentatie wordt geladen. Voor het beheren van wachtwoorden voor het wijzigen van presentaties, zie Presentaties schrijfbeveiligen .
De workflows hieronder gelden voor zowel PPT‑ als PPTX‑presentaties. De voorbeelden gebruiken beide formaten wanneer hun gedrag op bestand‑ en stream‑basis belangrijk is.
Een presentatie versleutelen met een openingswachtwoord
Gebruik ProtectionManager.encrypt om een openingswachtwoord toe te wijzen. Gebruik vervolgens Presentation.save om de versleutelde presentatie op te slaan.
Het volgende voorbeeld versleutelt een PPTX‑presentatie:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("pres.pptx")
try:
presentation.getProtectionManager().encrypt("open_password")
presentation.save("encrypted-pres.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Documenteigenschappen openbaar houden
Standaard omvat Aspose.Slides documenteigenschappen bij de encryptie van een presentatie. De methode ProtectionManager.setEncryptDocumentProperties regelt dit gedrag onafhankelijk van de encryptie van de dia‑inhoud. Geef False door vóór het aanroepen van ProtectionManager.encrypt wanneer een indexeer‑, classificatie‑, zoek‑ of documentbeheersysteem metadata moet kunnen lezen zonder het openingswachtwoord.
Het volgende voorbeeld maakt een versleutelde PPTX‑presentatie, terwijl de ingebouwde documenteigenschappen openbaar blijven:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = 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()
False doorgeven aan ProtectionManager.setEncryptDocumentProperties maakt niet de dia’s, masters, lay‑outs, vormen, media of andere presentatietekst openbaar. Het heeft alleen effect op documenteigenschappen. Zie Presentatie‑eigenschappen beheren om die eigenschappen te lezen zonder de versleutelde inhoud te laden.
Een versleutelde presentatie laden
Stel LoadOptions.setPassword in op het openingswachtwoord en geef de opties door aan Presentation bij het laden van het bestand. Het laden mislukt wanneer een openingswachtwoord vereist is maar het opgegeven wachtwoord ontbreekt of onjuist is.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation
load_options = LoadOptions()
load_options.setPassword("open_password")
presentation = Presentation("encrypted-pres.pptx", load_options)
try:
# Werk met de ontsleutelde presentatie.
pass
finally:
presentation.dispose()
Encryptie van een presentatie verwijderen
Laad de presentatie met het openingswachtwoord, roep ProtectionManager.removeEncryption aan en sla het resultaat op. De opgeslagen presentatie kan vervolgens zonder wachtwoord worden geladen.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation, SaveFormat
load_options = LoadOptions()
load_options.setPassword("open_password")
presentation = Presentation("encrypted-pres.pptx", load_options)
try:
presentation.getProtectionManager().removeEncryption()
presentation.save("encryption-removed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Een openingswachtwoord valideren vóór het laden
Gebruik PresentationFactory.getPresentationInfo om PresentationInfo te verkrijgen zonder een volledige presentatie‑instance te maken. Controleer PresentationInfo.isPasswordProtected voordat u een wachtwoord vraagt of valideert. Wanneer bescherming aanwezig is, valideer dan de opgegeven waarde met PresentationInfo.checkPassword .
Bestandspad‑workflow
Het volgende voorbeeld valideert een openingswachtwoord voor een PPTX‑bestand, geeft de gevalideerde waarde door aan LoadOptions.setPassword en laadt daarna de volledige presentatie:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation, PresentationFactory
file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = PresentationFactory.getInstance().getPresentationInfo(file_path)
if not presentation_info.isPasswordProtected():
print("The presentation does not have an opening password.")
elif not presentation_info.checkPassword(password):
print("The opening password is incorrect.")
else:
load_options = LoadOptions()
load_options.setPassword(password)
presentation = Presentation(file_path, load_options)
try:
print("The presentation was validated and loaded successfully.")
finally:
presentation.dispose()
Stream‑workflow
De stream‑overload van PresentationFactory.getPresentationInfo biedt dezelfde workflow. Reset de positie van een seek‑bare stream vóór het laden van de volledige presentatie vanaf die stream.
Het volgende voorbeeld gebruikt een PPT‑bestand:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation, PresentationFactory
FileInputStream = jpype.JClass("java.io.FileInputStream")
password = "open_password"
presentation_stream = FileInputStream("protected-presentation.ppt")
try:
presentation_info = PresentationFactory.getInstance().getPresentationInfo(presentation_stream)
if not presentation_info.isPasswordProtected():
print("The presentation does not have an opening password.")
elif not presentation_info.checkPassword(password):
print("The opening password is incorrect.")
else:
presentation_stream.getChannel().position(0)
load_options = LoadOptions()
load_options.setPassword(password)
presentation = Presentation(presentation_stream, load_options)
try:
print("The presentation was validated and loaded successfully.")
finally:
presentation.dispose()
finally:
presentation_stream.close()
Teruggeefwaarden van checkPassword
PresentationInfo.checkPassword retourneert True alleen wanneer de presentatie een openingswachtwoord heeft en het opgegeven wachtwoord correct is. Het retourneert False in elk van de volgende gevallen:
- Het wachtwoord is onjuist.
- De presentatie heeft geen openingswachtwoord.
- Het opgegeven wachtwoord is
Noneof leeg.
Het gedrag is identiek voor PPT‑ en PPTX‑presentaties.
Controleren of een geladen presentatie versleuteld is
Na het laden van een presentatie met het juiste wachtwoord, controleer ProtectionManager.isEncrypted om te bevestigen dat de bronpresentatie versleuteld was. Om bescherming met een openingswachtwoord vóór het laden te detecteren, gebruik PresentationInfo.isPasswordProtected zoals hierboven beschreven.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation
load_options = LoadOptions()
load_options.setPassword("open_password")
presentation = Presentation("encrypted-pres.pptx", load_options)
try:
is_encrypted = presentation.getProtectionManager().isEncrypted()
print(f"The presentation is encrypted: {is_encrypted}")
finally:
presentation.dispose()
Beveiligingsaanbevelingen
Beveiliging
Log geen openingswachtwoorden en vermeld ze niet in diagnostische berichten. Vermijd onnodige herhaalde validatie‑pogingen, bewaar wachtwoorden slechts zo lang als nodig in het geheugen, en hergebruik een geslaagde validatie‑resultaat bij direct laden van de presentatie.
Openbare documenteigenschappen kunnen auteurnamen, titels, onderwerpen, trefwoorden, bedrijfsinformatie, opmerkingen en aangepaste waarden onthullen, zelfs wanneer de presentatietekst versleuteld is. Versleutel gevoelige metadata samen met de presentatie. Het publiek houden van eigenschappen moet een expliciete beslissing zijn die alleen wordt genomen wanneer systemen de file moeten indexeren, classificeren, doorzoeken of beheren zonder een openingswachtwoord.
Een presentatie online met een wachtwoord beveiligen
- Open de applicatie Aspose.Slides Lock .
- Selecteer of upload de presentatie.
- Voer een wachtwoord in voor weergavebeveiliging.
- Voer eventueel een apart wachtwoord in voor bewerkingsbeveiliging.
- Pas de beveiliging toe en download het resulterende bestand.
FAQ
Wat is het verschil tussen een openingswachtwoord en een schrijfbeschermingswachtwoord?
Een openingswachtwoord versleutelt de presentatie en is vereist om de inhoud te laden. Een schrijfbeschermingswachtwoord beperkt bewerking zonder de inhoud te versleutelen.
Kan ik een openingswachtwoord valideren zonder alle dia’s te laden?
Ja. Verkrijg presentatiesinformatie, controleer of er een openingswachtwoordbeveiliging aanwezig is, en valideer het wachtwoord voordat u een volledige presentaties‑instance maakt.
Kan een applicatie metadata lezen zonder het openingswachtwoord?
Ja, maar alleen wanneer de presentatie is versleuteld met document‑eigenschap‑encryptie uitgeschakeld. De applicatie moet dan de alleen‑document‑eigenschappen‑laadmodus gebruiken die wordt beschreven in Presentatie‑eigenschappen beheren .
Ondersteunen de wachtwoord‑validatie‑workflows zowel PPT als PPTX?
Ja. Detectie en validatie van wachtwoorden op bestandspad‑ en stream‑basis werken hetzelfde voor PPT‑ en PPTX‑presentaties.