Crittografare un documento

La crittografia è il processo che traduce il testo leggibile in sequenze di byte prive di significato in modo che possa essere letto solo dalla persona che possiede la chiave di decrittazione o il codice segreto. Questo processo svolge un ruolo importante nella protezione dei tuoi contenuti. Aiuta a codificare il contenuto, verificare l’origine di un documento, dimostrare che il contenuto non è stato modificato dopo l’invio e garantire che i dati del documento siano al sicuro.

Questo articolo spiega come Aspose.Words ti consente di crittografare un documento e come verificare se un documento è crittografato o meno.

Crittografa con password

Per crittografare un documento, utilizzare la proprietà parola d’ordine per fornire una password che funzioni come chiave di crittografia. Ciò modificherà il contenuto del documento e lo renderà illeggibile. Il documento crittografato richiederà l’immissione di questa password prima di poter essere aperto.

La tabella seguente elenca i formati e gli algoritmi di crittografia supportati da Aspose.Words:

Formato Crittografia supportata durante il caricamento Crittografia supportata durante il salvataggio
DOC, DOT Crittografia XORCrittografia RC4 a 40 bitCryptoAPI Crittografia RC4 Crittografia RC4 (40 bit)
DOCX, DOTX, DOCM, DOTM, FlatOPC, FlatOpcTemplate, FlatOpcMacroEnabled, FlatOpcTemplateMacroEnabled Crittografia standard ECMA-376Crittografia agile ECMA-376 Crittografia standard ECMA-376 (AES128 + SHA1)
ODT, OTT Crittografia ODF (Blowfish/AES) Crittografia ODF (AES256 + SHA256)
PDF Crittografia RC4 (40/128 bit)

Il seguente esempio di codice mostra come crittografare un documento con una password:

import aspose.words as aw

# Create a document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.write("Hello world!")

# DocSaveOptions only applies to Doc and Dot save formats.
options = aw.saving.DocSaveOptions(aw.SaveFormat.DOC);

// Set a password with which the document will be encrypted, and which will be required to open it.
options.password = "MyPassword"
doc.save(artifacts_dir + "DocSaveOptions.SaveAsDoc.doc", options)

Controlla se un documento è crittografato

In alcuni casi, potresti avere un documento illeggibile e vuoi essere sicuro che sia crittografato e non danneggiato o compresso.

Per rilevare se un documento è crittografato e se è richiesta una password, è possibile utilizzare la proprietà is_encrypted della classe FileFormatInfo. Questa proprietà consentirà inoltre di eseguire alcune azioni prima di caricare un documento, ad esempio informare un utente di fornire una password.

Il seguente esempio di codice mostra come rilevare la crittografia del documento:

import aspose.words as aw

# Create a document.
doc = aw.Document()
saveOptions = aw.saving.OdtSaveOptions(aw.SaveFormat.ODT)
saveOptions.password = "MyPassword"

doc.Save(artifacts_dir + "File.DetectDocumentEncryption.odt", saveOptions)
            
# Create a `FileFormatInfo` object for this document.
info = aw.FileFormatUtil.detect_file_format(artifacts_dir + "File.DetectDocumentEncryption.odt")

# Verify the encryption status of our document.
self.assertTrue(info.is_encrypted)

Apri un documento con o senza password

Dopo esserci assicurati che un documento sia crittografato, possiamo provare ad aprire questo documento senza password, il che dovrebbe portare a un’eccezione.

Il seguente esempio di codice mostra come provare ad aprire un documento crittografato senza password:

import aspose.words as aw

# Create a document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.write("Hello world!")

# OoxmlSaveOptions only applies to Docx, Docm, Dotx, Dotm, or FlatOpc formats.
options = aw.saving.OoxmlSaveOptions(aw.SaveFormat.DOCX)

# Set a password with which the document will be encrypted, and which will be required to open it.
options.password = "MyPassword"
doc.Save(artifacts_dir + "OoxmlSaveOptions.SaveAsDocx.docx", options)

# We will not be able to open this document with Microsoft Word or
# Aspose.Words without providing the correct password.
# The following line will throw an exception.
doc = aw.Document(artifacts_dir + "OoxmlSaveOptions.Password.docx"))

Dopo aver visto che un documento crittografato non può essere aperto senza password, possiamo provare ad aprirlo inserendo la password.

Il seguente esempio di codice mostra come provare ad aprire un documento crittografato con una password:

import aspose.words as aw

# Create a document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.write("Hello world!")

# OoxmlSaveOptions only applies to Docx, Docm, Dotx, Dotm, or FlatOpc formats.
options = aw.saving.OoxmlSaveOptions(aw.SaveFormat.DOCX)

# Set a password with which the document will be encrypted, and which will be required to open it.
options.password = "MyPassword"
doc.Save(artifacts_dir + "OoxmlSaveOptions.SaveAsDocx.docx", options)

# Open the encrypted document by passing the correct password in a `LoadOptions` object.
doc = aw.Document(artifacts_dir + "OoxmlSaveOptions.Password.docx", aw.loading.LoadOptions("MyPassword"))

self.assertEqual("Hello world!", doc.get_text().strip())