pub fn encrypt_package(zip_bytes: &[u8], password: &str) -> Result<Vec<u8>>Expand description
加密整个 ZIP 包(ECMA-376 Agile Encryption)。
§流程(MS-OFFCRYPTO §2.3.4.11)
- 生成随机 passwordSalt / keyDataSalt / secret_key;
- 用密码派生哈希 + blockKey 派生加密密钥,加密 secret_key → encryptedKeyValue;
- 生成 verifierHashInput / verifierHashValue,用密码派生密钥加密;
- 用 secret_key + keyDataSalt 派生数据加密密钥;
- IV = keyDataSalt 的前 16 字节(规范要求,非随机生成);
- 加密原始 ZIP → EncryptedPackage;
- 构造 EncryptionInfo XML;
- 打包为新的 ZIP(含 EncryptionInfo + EncryptedPackage)。
§参数
zip_bytes:原始 .pptx 的 ZIP 字节流;password:加密密码。
§返回
加密后的 ZIP 字节流(打开需密码)。