Expand description
加密与保护模块:修改密码保护 + ECMA-376 Agile Encryption。
本模块提供两种级别的文档保护:
-
修改密码保护(modifyVerifier):打开时可只读浏览,修改需密码。 对标 PowerPoint “保护演示文稿 → 限制访问” 功能。 算法遵循 MS-OFFCRYPTO §2.4.2.4(SHA-512 + salt + spinCount)。
-
文件加密(ECMA-376 Agile Encryption):打开文件即需密码。 对标 PowerPoint “保护演示文稿 → 用密码进行加密” 功能。 使用 AES-256-CBC + SHA-512 密钥派生,符合现代 Office 加密标准。 算法遵循 MS-OFFCRYPTO §2.3.4.11(Agile Encryption)。
§与 pypdf 的对应
- pypdf
PdfWriter.encrypt(user_password, owner_password)←→encrypt_package - pypdf
PdfReader.is_encrypted←→is_encrypted_package - pypdf
PdfReader.decrypt(password)←→decrypt_package
Structs§
- Agile
Encryption Params - Agile Encryption 参数。
- Modify
Protection - 修改密码保护参数。
Constants§
- MODIFY_
SPIN_ COUNT - 修改密码保护的哈希迭代次数。
- SALT_
LEN - salt 字节长度(16 字节 = 128 位,符合 MS-OFFCRYPTO 推荐)。
Functions§
- aes_
256_ cbc_ decrypt - AES-256-CBC 解密。
- aes_
256_ cbc_ encrypt - AES-256-CBC 加密。
- compute_
modify_ hash - 按 MS-OFFCRYPTO §2.4.2.4 计算 modifyVerifier 的哈希。
- decrypt_
package - 解密加密的 ZIP 包。
- encrypt_
package - 加密整个 ZIP 包(ECMA-376 Agile Encryption)。
- generate_
random_ bytes - 生成随机 salt/IV 字节。
- is_
encrypted_ package - 检查字节流是否为加密的 OOXML 文档。