加密文档
加密是将可读文本转换为无意义的字节序列的过程,因此只能由拥有解密密钥或秘密代码的人读取。 此过程在保护您的内容方面起着重要作用。 它有助于对内容进行编码,验证文档的来源,证明内容在发送后未被修改,并确保文档中的数据是安全的。
本文介绍了Aspose.Words如何允许您加密文档以及如何检查文档是否具有加密功能。
用密码加密
要加密文档,请使用Password属性提供用作加密密钥的密码。 这将修改文档的内容并使其不可读。 加密文档需要输入此密码才能打开。
下表列出了Aspose.Words支持的格式和加密算法:
格式 | 加载时支持的加密 | 保存时支持加密 |
---|---|---|
DOC, DOT | XOR加密40位RC4 EncryptionCryptoAPI 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) |
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); |
检查文档是否已加密
在某些情况下,您可能有一个不可读的文档,并希望确保该文档已加密且未损坏或压缩。
要检测文档是否已加密以及是否需要密码,可以使用FileFormatInfo类的IsEncrypted属性。 此属性还允许您在加载文档之前执行一些操作,例如,通知用户提供密码。
下面的代码示例演示如何检测文档加密:
// 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")); |