Apresentações protegidas por senha em Python

Visão geral

Uma senha de abertura criptografa uma apresentação. A senha correta é necessária para carregar e visualizar o conteúdo da apresentação, portanto essa proteção fornece confidencialidade.

Uma senha de abertura difere de uma senha de proteção contra gravação. A proteção contra gravação restringe a modificação, mas não criptografa o conteúdo nem impede que a apresentação seja carregada. Para gerenciar senhas para modificar apresentações, veja Write-Protect Presentations.

Os fluxos de trabalho abaixo se aplicam a apresentações PPT e PPTX. Os exemplos usam ambos os formatos quando seu comportamento baseado em arquivo e em fluxo é importante.

Criptografar uma apresentação com uma senha de abertura

Use ProtectionManager.encrypt para atribuir uma senha de abertura. Em seguida, use Presentation.save para persistir a apresentação criptografada.

O exemplo a seguir criptografa uma apresentação PPTX:

import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    presentation.protection_manager.encrypt("open_password")
    presentation.save("encrypted-pres.pptx", slides.export.SaveFormat.PPTX)

Manter as propriedades do documento públicas

Por padrão, Aspose.Slides inclui as propriedades do documento na criptografia da apresentação. A propriedade ProtectionManager.encrypt_document_properties controla esse comportamento independentemente da criptografia do conteúdo dos slides. Defina‑a como False antes de chamar ProtectionManager.encrypt quando um sistema de indexação, classificação, pesquisa ou gerenciamento de documentos precisar ler os metadados sem a senha de abertura.

O exemplo a seguir cria uma apresentação PPTX criptografada mantendo suas propriedades de documento internas públicas:

import aspose.slides as slides

with slides.Presentation() as presentation:
    properties = presentation.document_properties
    properties.author = "Contoso Knowledge Management"
    properties.title = "Quarterly Product Roadmap"
    properties.keywords = "roadmap, planning, internal"

    presentation.slides[0].name = "Encrypted presentation content"
    presentation.protection_manager.encrypt_document_properties = False
    presentation.protection_manager.encrypt("open_password")
    presentation.save("public-properties-encrypted.pptx", slides.export.SaveFormat.PPTX)

Definir encrypt_document_properties como False não torna slides, mestres, layouts, formas, mídia ou outro conteúdo da apresentação público. Afeta apenas as propriedades do documento. Para ler essas propriedades sem carregar o conteúdo criptografado, veja Manage Presentation Properties.

Carregar uma apresentação criptografada

Defina LoadOptions.password como a senha de abertura e passe as opções para Presentation ao carregar o arquivo. O carregamento falha quando uma senha de abertura é exigida, mas a senha fornecida está ausente ou incorreta.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    # Trabalhe com a apresentação descriptografada.
    pass

Remover a criptografia de uma apresentação

Carregue a apresentação com sua senha de abertura, chame ProtectionManager.remove_encryption e salve o resultado. A apresentação salva pode então ser carregada sem senha.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    presentation.protection_manager.remove_encryption()
    presentation.save("encryption-removed.pptx", slides.export.SaveFormat.PPTX)

Validar uma senha de abertura antes de carregar

Use PresentationFactory.get_presentation_info para obter um PresentationInfo sem criar uma instância completa da apresentação. Verifique PresentationInfo.is_password_protected antes de solicitar ou validar uma senha. Quando a proteção está presente, valide o valor fornecido com PresentationInfo.check_password.

Fluxo de trabalho com caminho de arquivo

O exemplo a seguir valida uma senha de abertura para um arquivo PPTX, passa o valor validado para LoadOptions.password e então carrega a apresentação completa:

import aspose.slides as slides

file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_path)

if not presentation_info.is_password_protected:
    print("The presentation does not have an opening password.")
elif not presentation_info.check_password(password):
    print("The opening password is incorrect.")
else:
    load_options = slides.LoadOptions()
    load_options.password = password

    with slides.Presentation(file_path, load_options) as presentation:
        print("The presentation was validated and loaded successfully.")

Fluxo de trabalho com fluxo

A sobrecarga de fluxo de PresentationFactory.get_presentation_info fornece o mesmo fluxo de trabalho. Redefina a posição de um fluxo buscável antes de carregar a apresentação completa a partir desse fluxo.

O exemplo a seguir usa um arquivo PPT:

import aspose.slides as slides

password = "open_password"

with open("protected-presentation.ppt", "rb") as presentation_stream:
    presentation_info = slides.PresentationFactory.instance.get_presentation_info(presentation_stream)

    if not presentation_info.is_password_protected:
        print("The presentation does not have an opening password.")
    elif not presentation_info.check_password(password):
        print("The opening password is incorrect.")
    else:
        presentation_stream.seek(0)
        load_options = slides.LoadOptions()
        load_options.password = password

        with slides.Presentation(presentation_stream, load_options) as presentation:
            print("The presentation was validated and loaded successfully.")

Valores de retorno de CheckPassword

PresentationInfo.check_password retorna True somente quando a apresentação possui uma senha de abertura e a senha fornecida está correta. Retorna False em cada um destes casos:

  • A senha está incorreta.
  • A apresentação não possui senha de abertura.
  • A senha fornecida é None ou vazia.

O comportamento é o mesmo para apresentações PPT e PPTX.

Verificar se uma apresentação carregada está criptografada

Depois de carregar uma apresentação com a senha correta, inspecione ProtectionManager.is_encrypted para confirmar que a apresentação de origem foi criptografada. Para detectar a proteção por senha de abertura antes do carregamento, use PresentationInfo.is_password_protected conforme mostrado acima.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    is_encrypted = presentation.protection_manager.is_encrypted
    print("The presentation is encrypted: " + str(is_encrypted))

Recomendações de segurança

Proteger uma apresentação com senha online

  1. Abra o aplicativo Aspose.Slides Lock.
  2. Selecione ou faça upload da apresentação.
  3. Insira uma senha para proteção de visualização.
  4. Opcionalmente, insira uma senha separada para proteção de edição.
  5. Aplique a proteção e baixe o arquivo resultante.

FAQ

Qual é a diferença entre uma senha de abertura e uma senha de proteção contra gravação?

Uma senha de abertura criptografa a apresentação e é necessária para carregar seu conteúdo. Uma senha de proteção contra gravação restringe a modificação sem criptografar o conteúdo.

Posso validar uma senha de abertura sem carregar todos os slides?

Sim. Obtenha informações da apresentação, verifique se a proteção por senha de abertura está presente e valide a senha antes de criar uma instância completa da apresentação.

Um aplicativo pode ler metadados sem a senha de abertura?

Sim, mas somente quando a apresentação foi criptografada com encrypt_document_properties definido como False. O aplicativo deve então usar o modo de carregamento apenas de propriedades do documento descrito em Manage Presentation Properties.

Os fluxos de trabalho de verificação de senha suportam tanto PPT quanto PPTX?

Sim. A detecção e validação de senha baseadas em caminho de arquivo ou em fluxo comportam‑se da mesma forma para apresentações PPT e PPTX.