Зашифровать документ

Шифрование - это процесс, который преобразует читаемый текст в бессмысленные последовательности байтов, чтобы его мог прочитать только тот, у кого есть ключ дешифрования или секретный код. Этот процесс играет важную роль в обеспечении безопасности вашего контента. Это помогает закодировать содержимое, проверить происхождение документа, доказать, что содержимое не было изменено после его отправки, и обеспечить безопасность данных из документа.

В этой статье объясняется, как Aspose.Words позволяет зашифровать документ и как проверить, зашифрован документ или нет.

Шифрование с помощью пароля

Чтобы зашифровать документ, используйте свойство Password для ввода пароля, который выполняет функцию ключа шифрования. Это изменит содержимое вашего документа и сделает его нечитаемым. Для открытия зашифрованного документа потребуется ввести этот пароль.

В таблице ниже перечислены форматы и алгоритмы шифрования, поддерживаемые Aspose.Words:

Формат Поддерживаемое шифрование при загрузке Поддерживаемое шифрование при сохранении
DOC, DOT XOR-шифрование 40-битное RC4-шифрование с использованием CryptoAPI RC4-шифрования Шифрование RC4 (40-битное)
DOCX, DOTX, DOCM, DOTM, FlatOPC, FlatOpcTemplate, FlatOpcMacroEnabled, FlatOpcTemplateMacroEnabled Плоский макросъемочный Стандартное шифрование ECMA-376 Гибкое шифрование ECMA-376 Стандартное шифрование ECMA-376 (AES128 + SHA1)
ODT, OTT Шифрование ODF (Blowfish/AES) Шифрование ODF (AES256 + SHA256)
PDF Шифрование RC4 (40/128 бит)

В следующем примере кода показано, как зашифровать документ с помощью пароля:

// 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);

Проверьте, Зашифрован Ли Документ

В некоторых случаях у вас может оказаться нечитаемый документ, и вы хотите быть уверены, что он зашифрован, не поврежден и не сжат.

Чтобы определить, зашифрован ли документ и требуется ли пароль, вы можете использовать свойство IsEncrypted класса FileFormatInfo. Это свойство также позволит вам выполнить некоторые действия перед загрузкой документа, например, попросить пользователя ввести пароль.

В следующем примере кода показано, как обнаружить шифрование документа:

// 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;

Откройте документ с паролем или без него

Когда мы убедимся, что документ зашифрован, мы можем попытаться открыть этот документ без пароля, что должно привести к исключению.

В следующем примере кода показано, как попытаться открыть зашифрованный документ без пароля:

// 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");

После того, как мы убедились, что зашифрованный документ не может быть открыт без пароля, мы можем попытаться открыть его, введя пароль.

В следующем примере кода показано, как попытаться открыть зашифрованный документ с помощью пароля:

// 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"));