Documentación de HotXLS

Propiedad EncryptionPassword

Devuelve o establece la contraseña usada para cifrar un libro BIFF8 (.xls) al ejecutar SaveAs. Si se establece un valor no vacío, se produce un archivo protegido por 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 una 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 y cifra con RC4 todos los cuerpos de registro posteriores. El formato de cable 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. Se preserva la re-derivación de clave de bloque cada 1024 bytes para que los libros grandes, las cadenas SST CONTINUE y los flujos de varias hojas se cifren correctamente

El cifrado se aplica solo 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, de modo que las aplicaciones existentes que nunca llaman al establecedor no se ven afectadas

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

Ejemplo

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

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