2 Commits

  • fix(decrypt): 非首页 HMAC 异常时保留页面避免后续页整体错位
    - 微信 4.x 大库在 1GiB 边界会出现单页 HMAC 不匹配但页本身仍可解密的情况,原先直接丢弃页会让后续页号整体错位,最终导致 SQLite 必然损坏。改为:HMAC 不匹配时照常解密保留,AES 失败用零页占位,保证页号对齐。
    
    - 解密管线全程增加诊断采样:源文件读取前后快照、输入 layout、key 模式、HMAC/AES 异常页 SHA256 与 HMAC 变体匹配,便于后续定位疑难库。
    
    - 解密 SSE 流将 hmac_warning_pages / hmac_warning_samples 透出到前端并参与诊断告警判断,避免警告被静默吞掉。
    
    - 新增回归测试覆盖非首页 HMAC 单字节翻转场景。
  • fix(key): 修复数据库密钥模式识别逻辑
    - 新增原始加密密钥与 SQLCipher passphrase 两种密钥模式自动识别
    - 通过首页 HMAC 校验确认实际密钥模式,避免错误派生导致解密失败
    - 解密输出时清理加密页尾部的 IV/HMAC 保留区
    - 增加解密失败时的 key_mode、HMAC 与 SQLite 诊断信息
    - 新增单测覆盖两种密钥模式的解密路径
    - 更新 README 补充数据库解密兼容性说明