Proteja Apresentações com Senha no .NET

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 é diferente 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 tanto a apresentações PPT quanto PPTX. Os exemplos usam ambos os formatos onde seu comportamento baseado em arquivo e em fluxo é importante.

Criptografar uma apresentação com uma senha de abertura

Use IProtectionManager.Encrypt para atribuir uma senha de abertura. Em seguida, use IPresentation.Save para persistir a apresentação criptografada.

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

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("pres.pptx");

presentation.ProtectionManager.Encrypt("open_password");
presentation.Save("encrypted-pres.pptx", SaveFormat.Pptx);

Manter as propriedades do documento públicas

Por padrão, o Aspose.Slides inclui as propriedades do documento na criptografia da apresentação. A propriedade IProtectionManager.EncryptDocumentProperties controla esse comportamento independentemente da criptografia do conteúdo dos slides. Defina-a como false antes de chamar IProtectionManager.Encrypt quando um sistema de indexação, classificação, busca 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:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();

var properties = presentation.DocumentProperties;
properties.Author = "Contoso Knowledge Management";
properties.Title = "Quarterly Product Roadmap";
properties.Keywords = "roadmap, planning, internal";

presentation.Slides[0].Name = "Encrypted presentation content";
presentation.ProtectionManager.EncryptDocumentProperties = false;
presentation.ProtectionManager.Encrypt("open_password");
presentation.Save("public-properties-encrypted.pptx", SaveFormat.Pptx);

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

Carregar uma apresentação criptografada

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

using Aspose.Slides;

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-pres.pptx", loadOptions);

// Trabalhe com a apresentação descriptografada.

Remover a criptografia de uma apresentação

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

using Aspose.Slides;
using Aspose.Slides.Export;

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-pres.pptx", loadOptions);

presentation.ProtectionManager.RemoveEncryption();
presentation.Save("encryption-removed.pptx", SaveFormat.Pptx);

Validar uma senha de abertura antes de carregar

Use IPresentationFactory.GetPresentationInfo para obter IPresentationInfo sem criar uma instância completa da apresentação. Verifique IPresentationInfo.IsPasswordProtected antes de solicitar ou validar uma senha. Quando a proteção está presente, valide o valor fornecido com IPresentationInfo.CheckPassword.

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:

using System;
using Aspose.Slides;

var filePath = "protected-presentation.pptx";
var password = "open_password";
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(filePath);

if (!presentationInfo.IsPasswordProtected)
{
    Console.WriteLine("The presentation does not have an opening password.");
}
else if (!presentationInfo.CheckPassword(password))
{
    Console.WriteLine("The opening password is incorrect.");
}
else
{
    var loadOptions = new LoadOptions { Password = password };
    using var presentation = new Presentation(filePath, loadOptions);

    Console.WriteLine("The presentation was validated and loaded successfully.");
}

Fluxo de trabalho com fluxo

A sobrecarga de fluxo de IPresentationFactory.GetPresentationInfo fornece o mesmo fluxo de trabalho. Redefina a posição de um fluxo pesquisável antes de carregar a apresentação completa a partir desse fluxo.

O exemplo a seguir usa um arquivo PPT:

using System;
using System.IO;
using Aspose.Slides;

var password = "open_password";
using var presentationStream = File.OpenRead("protected-presentation.ppt");
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(presentationStream);

if (!presentationInfo.IsPasswordProtected)
{
    Console.WriteLine("The presentation does not have an opening password.");
}
else if (!presentationInfo.CheckPassword(password))
{
    Console.WriteLine("The opening password is incorrect.");
}
else
{
    presentationStream.Position = 0;

    var loadOptions = new LoadOptions { Password = password };
    using var presentation = new Presentation(presentationStream, loadOptions);

    Console.WriteLine("The presentation was validated and loaded successfully.");
}

Valores de retorno de CheckPassword

IPresentationInfo.CheckPassword retorna true somente quando a apresentação tem 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 é null 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 IProtectionManager.IsEncrypted para confirmar que a apresentação original foi criptografada. Para detectar proteção por senha de abertura antes de carregar, use IPresentationInfo.IsPasswordProtected como mostrado acima.

using System;
using Aspose.Slides;

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-pres.pptx", loadOptions);

var isEncrypted = presentation.ProtectionManager.IsEncrypted;
Console.WriteLine("The presentation is encrypted: " + isEncrypted);

Recomendações de segurança

Proteger uma apresentação com senha online

  1. Abra o aplicativo Aspose.Slides Lock.
  2. Selecione ou carregue a apresentação.
  3. Digite uma senha para proteção de visualização.
  4. Opcionalmente, digite 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 as 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 apenas quando a apresentação foi criptografada com EncryptDocumentProperties definido como false. O aplicativo então deve usar o modo de carregamento somente de propriedades de 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 baseada em caminho de arquivo e em fluxo comportam‑se da mesma forma para apresentações PPT e PPTX.