Proteger apresentações com senha no Android
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, consulte Proteger apresentações contra gravação.
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 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:
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();
}
Manter as propriedades do documento públicas
Por padrão, Aspose.Slides inclui as propriedades do documento na criptografia da apresentação. O método IProtectionManager.setEncryptDocumentProperties controla esse comportamento de forma independente da criptografia do conteúdo dos slides. Passe false antes de chamar IProtectionManager.encrypt quando um sistema de indexação, classificação, pesquisa ou gerenciamento de documentos precisar ler metadados sem a senha de abertura.
O exemplo a seguir cria uma apresentação PPTX criptografada enquanto deixa suas propriedades de documento internas públicas:
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();
}
Passar false para IProtectionManager.setEncryptDocumentProperties 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 Gerenciar propriedades da apresentação.
Carregar uma apresentação criptografada
Defina ILoadOptions.setPassword como 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.
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 {
// Trabalhe com a apresentação descriptografada.
} finally {
presentation.dispose();
}
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 senha.
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();
}
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 ILoadOptions.setPassword, e então carrega a apresentação completa:
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();
}
}
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 buscável antes de carregar a apresentação completa a partir desse fluxo.
O exemplo a seguir usa um arquivo 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();
}
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 é
nullou vazia.
O comportamento é o mesmo para apresentações PPT e PPTX.
Verificar se uma apresentação carregada está criptografada
Após carregar uma apresentação com a senha correta, inspecione IProtectionManager.isEncrypted para confirmar que a apresentação original estava criptografada. Para detectar a proteção por senha de abertura antes de carregar, use IPresentationInfo.isPasswordProtected como mostrado acima.
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();
}
Recomendações de segurança
Segurança
Não registre senhas de abertura nem as inclua em mensagens de diagnóstico. Evite tentativas repetidas de validação desnecessárias, mantenha as senhas na memória somente pelo tempo necessário e reutilize um resultado de validação bem‑sucedido ao carregar a apresentação imediatamente.
Propriedades de documento públicas podem divulgar nomes de autores, títulos, assuntos, palavras‑chave, informações da empresa, comentários e valores personalizados mesmo que o conteúdo da apresentação esteja criptografado. Criptografe metadados sensíveis juntamente com a apresentação. Deixar as propriedades públicas deve ser uma decisão explícita tomada somente quando os sistemas precisam indexar, classificar, pesquisar ou gerenciar o arquivo sem uma senha de abertura.
Proteger uma apresentação com senha on‑line
- Abra o aplicativo Aspose.Slides Lock.
- Selecione ou envie a apresentação.
- Insira uma senha para proteção de visualização.
- Opcionalmente, insira uma senha separada para proteção de edição.
- Aplique a proteção e faça o download do 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 a criptografia de propriedades de documento desativada. O aplicativo deve então usar o modo de carregamento apenas de propriedades de documento descrito em Gerenciar propriedades da apresentação.
Os fluxos de trabalho de verificação de senha dão suporte a PPT e PPTX?
Sim. A detecção e validação de senha baseadas em caminho de arquivo e em fluxo comportam‑se da mesma forma para apresentações PPT e PPTX.