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 摘要)的二进制哈希。