Skip to main content

compute_modify_hash

Function compute_modify_hash 

Source
pub fn compute_modify_hash(
    password: &str,
    salt: &[u8],
    spin_count: u32,
) -> Vec<u8> 
Expand description

按 MS-OFFCRYPTO §2.4.2.4 计算 modifyVerifier 的哈希。

§算法

H_0 = SHA-512(salt || password_utf16le)
H_n = SHA-512(H_{n-1} || n.to_le_u32)   for n = 0..spinCount-1
  • 密码用 UTF-16 LE 编码(OOXML 规范,不是 UTF-8);
  • 每次迭代都把迭代序号 n 以小端 uint32 拼到 H_{n-1} 之后。

注意:此函数的迭代顺序(H_{n-1} || iterator)与 Agile Encryption 的迭代顺序(iterator || H_{n-1}不同,不可混用。

§参数

  • password:明文密码(Unicode);
  • salt:16 字节随机值;
  • spin_count:迭代次数(Office 2016+ 默认 100 000)。

§返回

64 字节(SHA-512 摘要)的二进制哈希。