Encriptar archivos de Excel con Node.js vía C++
Microsoft Excel (97 - 365) te permite cifrar y proteger con contraseña tus hojas de cálculo. Utiliza algoritmos proporcionados por un proveedor de servicios criptográficos, o CSP, un conjunto de algoritmos criptográficos con diferentes propiedades. El CSP predeterminado es ‘Compatible con Office 97/2000’ o ‘Cifrado débil (XOR)’. Es importante elegir la longitud adecuada de la clave de cifrado. Algunos CSP no admiten más de 40 o 56 bits, considerándose un cifrado débil. Para un cifrado fuerte, se requiere una longitud mínima de clave de 128 bits. Microsoft Windows contiene CSP que ofrecen tipos de cifrado fuertes, como por ejemplo el ‘Proveedor Criptográfico Fuerte de Microsoft’. Para darte una idea, los bancos utilizan un cifrado de 128 bits para encriptar la conexión con sus sistemas de Banca por Internet.
Aspose.Cells te permite cifrar y proteger con contraseña archivos de Microsoft Excel con el tipo de cifrado que desees.
Usar Microsoft Excel
Para configurar los ajustes de cifrado de archivos en Microsoft Excel (aquí Microsoft Excel 2003):
- Desde el menú Herramientas, selecciona Opciones. Aparecerá un cuadro de diálogo.
- Selecciona la pestaña Seguridad.
- Ingresa una contraseña y haz clic en Avanzado.
- Elige el tipo de cifrado y confirma la contraseña.
Cifrado con Aspose.Cells for Node.js via C++
El siguiente ejemplo muestra cómo cifrar y proteger con contraseña un archivo de Excel utilizando la API de 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"));
Especificar la opción de Contraseña para modificar
El siguiente ejemplo muestra cómo establecer la opción de Contraseña para modificar en Microsoft Excel para un archivo existente utilizando la API de 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"));
Verificar la contraseña del archivo cifrado
Para verificar la contraseña del archivo encriptado, Aspose.Cells for Node.js via C++ ofrece el método FileFormatUtil.verifyPassword(Uint8Array, string). Estos métodos aceptan dos parámetros, el flujo de archivo y la contraseña que necesita verificarse. El siguiente fragmento de código muestra el uso del método FileFormatUtil.verifyPassword(Uint8Array, string) para verificar si la contraseña proporcionada es válida o no.
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);
Cifrado/Descifrado de archivos ODS con Aspose.Cells
Aspose.Cells te permite encriptar y desencriptar archivos ODS. El archivo ODS desencriptado puede abrirse tanto en Excel como en OpenOffice, sin embargo, el archivo ODS encriptado solo puede abrirse en OpenOffice tras proporcionar la contraseña. Excel no puede abrir el archivo encriptado de ODS y puede mostrar un mensaje de advertencia. Las opciones de encriptación no son aplicables a archivos ODS, a diferencia de otros tipos de archivos. Para encriptar un archivo ODS, carga el archivo y establece el valor de WorkbookSettings.getPassword() con la contraseña real antes de guardarlo. El archivo ODS encriptado resultante solo puede abrirse en 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"));
Para descifrar un archivo ODS, carga el archivo proporcionando una contraseña en el LoadOptions.getPassword(). Una vez que el archivo está cargado, establece el valor de la cadena WorkbookSettings.getPassword() como nulo.
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");