Criptografar um documento

A criptografia é o processo que traduz texto legível em sequências de bytes sem sentido, de modo que só pode ser lido pela pessoa que possui a chave de descriptografia ou o código secreto. Este processo desempenha um papel importante na segurança do seu conteúdo. Ajuda a codificar o conteúdo, a verificar a origem de um documento, a provar que o conteúdo não foi modificado após o seu envio e a garantir que os dados do documento são seguros.

Este artigo explica como Aspose.Words permite criptografar um documento e como verificar se um documento tem criptografia ou não.

Criptografar com senha

Para criptografar um documento, use a propriedade Password para fornecer uma senha que funcione como uma chave de criptografia. Isso modificará o conteúdo do seu documento e o tornará ilegível. O documento criptografado exigirá que essa senha seja inserida antes de poder ser aberta.

A tabela abaixo lista os formatos e algoritmos de encriptação suportados por Aspose.Words:

Formato Criptografia suportada durante o carregamento Criptografia suportada ao salvar
DOC, DOT XOR encriptação40 bits RC4 EncryptionCryptoAPI RC4 encriptação RC4 encriptação (40 bits)
DOCX, DOTX, DOCM, DOTM, FlatOPC, FlatOpcTemplate, FlatOpcMacroEnabled, FlatOpcTemplateMacroEnabled ECMA-376 Encriptação PadrãoECMA-376 Encriptação Ágil ECMA-376 Encriptação Padrão (AES128 + SHA1)
ODT, OTT ODF Encriptação (Blowfish / AES) ODF encriptação (AES256 + SHA256)
PDF RC4 encriptação (40/128 bits)

O exemplo de código a seguir mostra como criptografar um documento com uma senha:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->Write(u"Hello world!");
auto saveOptions = MakeObject<DocSaveOptions>();
saveOptions->set_Password(u"password");
doc->Save(ArtifactsDir + u"WorkingWithDocSaveOptions.EncryptDocumentWithPassword.docx", saveOptions);

Verificar se um documento está encriptado

Em alguns casos, você pode ter um documento ilegível e quer ter certeza de que o documento está criptografado e não corrompido ou compactado.

Para detectar se um documento está encriptado e se é necessária uma palavra-passe, pode utilizar a propriedade IsEncrypted da classe FileFormatInfo. Essa propriedade também permitirá que você execute alguma ação antes de carregar um documento, por exemplo, informando um usuário para fornecer uma senha.

O exemplo de código a seguir mostra como detectar a criptografia do documento:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
SharedPtr<FileFormatInfo> info = FileFormatUtil::DetectFileFormat(MyDir + u"Encrypted.docx");
std::cout << System::Convert::ToString(info->get_IsEncrypted()) << std::endl;

Abrir um documento com ou sem palavra-passe

Quando tivermos a certeza de que um documento está encriptado, podemos tentar abri-lo sem uma palavra-passe, o que deverá dar origem a uma excepção.

O exemplo de código a seguir mostra como tentar abrir um documento criptografado sem uma senha:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
// We will not be able to open this document with Microsoft Word or
// Aspose.Words without providing the correct password.
auto doc = MakeObject<Document>(MyDir + u"Encrypted.docx");

Depois de termos visto que um documento criptografado não pode ser aberto sem uma senha, podemos tentar abri-lo digitando a senha.

O exemplo de código a seguir mostra como tentar abrir um documento criptografado com uma senha:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Encrypted.docx", MakeObject<LoadOptions>(u"docPassword"));
doc->Save(ArtifactsDir + u"WorkingWithLoadOptions.LoadAndSaveEncryptedOdt.odt", MakeObject<OdtSaveOptions>(u"newPassword"));