HotXLS Docs

EncryptionPassword 属性

返回或设置在 SaveAs 时用于加密 BIFF8 (.xls) 工作簿的密码。设置非空值会生成与 Excel 兼容的受密码保护文件:Microsoft Excel、LibreOffice Calc 和其他 BIFF8 读取器在打开时会提示输入密码,并在密码错误时拒绝访问。可读写 WideString。(默认值为空字符串,自 v2.32.0 起可用。)

语法

property EncryptionPassword: WideString;

备注

写入路径在工作簿 BOF 之后立即发出 BIFF8 FILEPASS 记录 ($002F),并对随后的每个记录体进行 RC4 加密。传输格式为 vMajor=1、vMinor=1("Office 97/2000 兼容"加密)。16 字节的 Salt 和 Verifier 通过 Windows CryptGenRandom 而非 Pascal Random 生成。每 1024 字节边界处的块密钥重新派生被保留,因此大型工作簿、SST CONTINUE 链和多工作表流能够正确加密

加密仅适用于 BIFF8 (xlExcel97) — BIFF5 保存路径仍为明文。空的 EncryptionPassword 保留旧版明文输出且为默认值,因此从未调用该设置方法的现有应用程序不受影响

安全说明:使用 vMajor=1/vMinor=1 的 BIFF8 RC4 使用 40 位密钥,按照 2025 年的标准,这已被视为已破解。请将此功能用于与 Excel 经典密码保护界面的兼容性,而非用于敏感数据的机密性保护。如需真正的安全性,请优先选择 AES 加密的 XLSX 输出

示例

此示例保存一个受密码保护的 .xls 文件

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