Шифрование Excel файлов с помощью Node.js через C++
Microsoft Excel (с 97 по 365) позволяет шифровать и защищать паролем ваши электронные таблицы. Для этого используются алгоритмы, предоставляемые поставщиком криптографических услуг, или CSP - набор криптографических алгоритмов с различными свойствами. CSP по умолчанию - ‘Office 97/2000 Compatible’ или ‘Weak Encryption (XOR)’. Важно выбрать соответствующую длину ключа шифрования. Некоторые 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 for Node.js via C++
В следующем примере показано, как зашифровать и защитить паролем файл Excel с использованием API Aspose.Cells.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "Book1.xls");
// Instantiate a Workbook object.
// Open an excel file.
const workbook = new AsposeCells.Workbook(filePath);
// Specify XOR encryption type.
workbook.setEncryptionOptions(AsposeCells.EncryptionType.XOR, 40);
// Specify Strong Encryption type (RC4, Microsoft Strong Cryptographic Provider).
workbook.setEncryptionOptions(AsposeCells.EncryptionType.StrongCryptographicProvider, 128);
// Password protect the file.
workbook.getSettings().setPassword("1234");
// Save the excel file.
workbook.save(path.join(dataDir, "encryptedBook1.out.xls"));
Указание опции ‘Пароль на изменение’
В следующем примере показано, как установить опцию ‘Пароль на изменение’ для существующего файла Microsoft Excel с помощью API Aspose.Cells.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "Book1.xls");
// Instantiate a Workbook object.
// Open an excel file.
const workbook = new AsposeCells.Workbook(filePath);
// Set the password for modification.
workbook.getSettings().getWriteProtection().setPassword("1234");
// Save the excel file.
workbook.save(path.join(dataDir, "SpecifyPasswordToModifyOption.out.xls"));
Проверьте пароль зашифрованного файла
Для проверки пароля зашифрованного файла, Aspose.Cells for Node.js via C++ предоставляет метод FileFormatUtil.verifyPassword(Uint8Array, string). Эти методы принимают два параметра: поток файла и пароль, который необходимо проверить. Следующий фрагмент кода демонстрирует использование метода FileFormatUtil.verifyPassword(Uint8Array, string) для проверки, является ли предоставленный пароль допустимым или нет.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "EncryptedBook1.xlsx");
// Create a Stream object
const fs = require("fs");
const fstream = fs.readFileSync(filePath);
const isPasswordValid = AsposeCells.FileFormatUtil.verifyPassword(fstream, "1234");
console.log("Password is Valid: " + isPasswordValid);
Шифрование/дешифрование файла ODS с помощью Aspose.Cells
Aspose.Cells позволяет шифровать и расшифровывать файлы ODS. Расшифрованный файл ODS можно открыть как в Excel, так и в OpenOffice, однако зашифрованный файл ODS может быть открыт только в OpenOffice после ввода пароля. Excel не сможет открыть зашифрованный файл ODS и может вывести предупреждающее сообщение. Параметры шифрования неприменимы к файлам ODS, в отличие от других типов файлов. Для шифрования ODS файла загрузите его и установите значение WorkbookSettings.getPassword() равным действующему паролю перед сохранением. Финальный зашифрованный файл ODS можно открыть только в OpenOffice.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const sourceDir = RunExamples.Get_SourceDirectory();
// Output directory
const outputDir = RunExamples.Get_OutputDirectory();
// Open an ODS file
const workbook = new AsposeCells.Workbook(path.join(sourceDir, "sampleODSFile.ods"));
// Password protect the file
workbook.getSettings().setPassword("1234");
// Save the ODS file
workbook.save(path.join(outputDir, "outputEncryptedODSFile.ods"));
Для расшифровки файла ODS загрузите файл, предоставив пароль в LoadOptions.getPassword(). После загрузки файла установите строку WorkbookSettings.getPassword() в null.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const sourceDir = path.join(__dirname, "data");
// Output directory
const outputDir = path.join(__dirname, "output");
// Open an encrypted ODS file
const loadOptions = new AsposeCells.LoadOptions(AsposeCells.LoadFormat.Ods);
// Set original password
loadOptions.setPassword("1234");
// Load the encrypted ODS file with the appropriate load options
const workbook = new AsposeCells.Workbook(path.join(sourceDir, "sampleEncryptedODSFile.ods"), loadOptions);
// Set the password to null
workbook.getSettings().setPassword(null);
// Save the decrypted ODS file
workbook.save(outputDir + "outputDecryptedODSFile.ods");