Documentación de HotXLS

Propiedad EncryptionPassword

Devuelve o establece la contraseña usada para cifrar un libro de trabajo BIFF8 (.xls) al ejecutar SaveAs. Al establecer un valor no vacío se genera un archivo protegido con contraseña compatible con Excel: Microsoft Excel, LibreOffice Calc y otros lectores BIFF8 solicitan la contraseña al abrir y deniegan el acceso si es incorrecta. Lectura/escritura WideString. (El valor predeterminado es cadena vacía, disponible desde v2.32.0.)

Sintaxis

property EncryptionPassword: WideString;

Observaciones

La ruta de escritura emite un registro BIFF8 FILEPASS ($002F) inmediatamente después del BOF del libro de trabajo y cifra con RC4 el cuerpo de todos los registros posteriores. El formato de transmisión es vMajor=1, vMinor=1 (cifrado compatible con "Office 97/2000"). El Salt y el Verificador de 16 bytes se generan mediante CryptGenRandom de Windows en lugar de Random de Pascal. La re-derivación de clave de bloque cada 1024 bytes se conserva para que los libros de trabajo grandes, las cadenas CONTINUE del SST y los flujos de varias hojas se cifren correctamente

El cifrado solo se aplica a BIFF8 (xlExcel97) — la ruta de guardado BIFF5 permanece en texto plano. Una EncryptionPassword vacía mantiene la salida en texto plano heredada y es el valor predeterminado, por lo que las aplicaciones existentes que nunca llamen al setter no se ven afectadas

Nota de seguridad: BIFF8 RC4 con vMajor=1/vMinor=1 usa una clave de 40 bits, que se considera obsoleta según los estándares de 2025. Use esta función para compatibilidad con la UI de protección con contraseña clásica de Excel, no para confidencialidad de datos sensibles. Para seguridad real, prefiera la salida XLSX con AES

Nota de seguridad

Este ejemplo guarda un archivo .xls protegido con contraseña

Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('Confidential.xls', xlExcel97);