C++を使用したExcelファイルの暗号化
Microsoft Excel (97 - 365)を使用して、スプレッドシートを暗号化およびパスワード保護することができます。暗号化には、暗号化サービスプロバイダー(CSP)によって提供されるアルゴリズムが使用されます。暗号化キーの長さを適切に選択することが重要です。一部のCSPは40ビットまたは56ビットを超える長さをサポートしていません。これは弱い暗号化と見なされます。強力な暗号化には、最小128ビットのキー長が必要です。Microsoft Windowsには、強力な暗号化タイプを提供するCSPも含まれています。例えば、「Microsoft Strong Cryptographic Provider」などです。128ビットの暗号化は、銀行がインターネットバンキングシステムとの接続を暗号化する際に使用するものです。
Aspose.Cellsを使用すると、任意の暗号化タイプでMicrosoft Excelファイルを暗号化およびパスワード保護することができます。
Microsoft Excel の使用
Microsoft Excel(ここではMicrosoft Excel 2003)でファイルの暗号化設定を行うには:
- ツールメニューからオプションを選択します。ダイアログが表示されます。
- セキュリティタブを選択します。
- パスワードを入力し、詳細をクリックします。
- 暗号化方式を選択し、パスワードを確認します。
Aspose.Cells を使用した暗号化
次の例は、Aspose.Cells APIを使用してExcelファイルを暗号化し、パスワード保護する方法を示しています。
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Path of input excel file
U16String inputFilePath = srcDir + u"Book1.xls";
// Path of output excel file
U16String outputFilePath = outDir + u"encryptedBook1.out.xls";
// Instantiate a Workbook object and open the excel file
Workbook workbook(inputFilePath);
// Specify XOR encryption type
workbook.SetEncryptionOptions(EncryptionType::XOR, 40);
// Specify Strong Encryption type (RC4, Microsoft Strong Cryptographic Provider)
workbook.SetEncryptionOptions(EncryptionType::StrongCryptographicProvider, 128);
// Password protect the file
workbook.GetSettings().SetPassword(u"1234");
// Save the encrypted excel file
workbook.Save(outputFilePath);
std::cout << "File encrypted and saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
修正パスワードを指定するオプション
次の例は、Aspose.Cells APIを使用して既存のファイルの修正パスワードMicrosoft Excelオプションを設定する方法を示しています。
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Path of input excel file
U16String inputFilePath = srcDir + u"Book1.xls";
// Path of output excel file
U16String outputFilePath = outDir + u"SpecifyPasswordToModifyOption.out.xls";
// Create workbook
Workbook workbook(inputFilePath);
// Set the password for modification
workbook.GetSettings().GetWriteProtection().SetPassword(u"1234");
// Save the excel file
workbook.Save(outputFilePath);
std::cout << "Password for modification set successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
暗号化されたファイルのパスワードを確認します
暗号化されたファイルのパスワードを検証するために、Aspose.Cells for C++はVerifyPasswordメソッドを提供します。このメソッドは、ファイルストリームと検証したいパスワードの二つのパラメータを受け取ります。 以下のコードスニペットは、提供されたパスワードが有効かどうかを確認するVerifyPasswordメソッドの使用を示しています。
#include <iostream>
#include <fstream>
#include <vector>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String inputPath = srcDir + u"EncryptedBook1.xlsx";
std::vector<uint8_t> fileData;
std::ifstream file(inputPath.ToUtf8(), std::ios::binary);
if (file)
{
file.seekg(0, std::ios::end);
fileData.resize(file.tellg());
file.seekg(0, std::ios::beg);
file.read(reinterpret_cast<char*>(fileData.data()), fileData.size());
}
Vector<uint8_t> data(fileData.data(), static_cast<int32_t>(fileData.size()));
bool isPasswordValid = FileFormatUtil::VerifyPassword(data, u"123456");
std::cout << "Password is Valid: " << std::boolalpha << isPasswordValid << std::endl;
Aspose::Cells::Cleanup();
}
Aspose.Cells を使用して ODS ファイルの暗号化/復号化
Aspose.CellsはODSファイルの暗号化と復号を可能にします。復号されたODSファイルはExcelとOpenOfficeの両方で開くことができますが、暗号化されたODsファイルはパスワードを入力した後にのみOpenOfficeで開くことができます。Excelは暗号化されたODSファイルを開けず、警告メッセージが表示される場合があります。暗号化オプションは他のファイルタイプとは異なり、ODSファイルには適用できません。ODSファイルを暗号化するには、ファイルを読み込み、WorkbookSettings.GetPassword()の値を実際のパスワードに設定し、その後保存します。出力された暗号化ODSファイルはOpenOfficeのみで開くことができます。
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C++
// Source directory path
U16String sourceDir = u"..\\Data\\01_SourceDirectory\\";
// Output directory path
U16String outputDir = u"..\\Data\\02_OutputDirectory\\";
// Open an ODS file
Workbook workbook(sourceDir + u"sampleODSFile.ods");
// Password protect the file
workbook.GetSettings().SetPassword(u"1234");
// Save the ODS file
workbook.Save(outputDir + u"outputEncryptedODSFile.ods");
std::cout << "ODS file password protected and saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
return 0;
}
ODSファイルを復号化するには、LoadOptions.GetPassword()によるパスワードの提供でファイルを読み込みます。ファイルが読み込まれたら、WorkbookSettings.GetPassword()文字列をnullに設定します。
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Path to the source directory
U16String sourceDir = u"..\\Data\\01_SourceDirectory\\";
// Output directory
U16String outputDir = u"..\\Data\\02_OutputDirectory\\";
// Open an encrypted ODS file
LoadOptions loadOptions(LoadFormat::Ods);
// Set original password
loadOptions.SetPassword(u"1234");
// Load the encrypted ODS file with the appropriate load options
Workbook workbook(sourceDir + u"sampleEncryptedODSFile.ods", loadOptions);
// Set the password to null
workbook.GetSettings().SetPassword(nullptr);
// Save the decrypted ODS file
workbook.Save(outputDir + u"outputDecryptedODSFile.ods");
std::cout << "Decrypted ODS file saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
}