Skip to main content

encrypt_package

Function encrypt_package 

Source
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)

  1. 生成随机 passwordSalt / keyDataSalt / secret_key;
  2. 用密码派生哈希 + blockKey 派生加密密钥,加密 secret_key → encryptedKeyValue;
  3. 生成 verifierHashInput / verifierHashValue,用密码派生密钥加密;
  4. 用 secret_key + keyDataSalt 派生数据加密密钥;
  5. IV = keyDataSalt 的前 16 字节(规范要求,非随机生成);
  6. 加密原始 ZIP → EncryptedPackage;
  7. 构造 EncryptionInfo XML;
  8. 打包为新的 ZIP(含 EncryptionInfo + EncryptedPackage)。

§参数

  • zip_bytes:原始 .pptx 的 ZIP 字节流;
  • password:加密密码。

§返回

加密后的 ZIP 字节流(打开需密码)。