lhy8888/Lhash

GitHub: lhy8888/Lhash

一款面向 Windows 的可信本地文件完整性验证工具,强调可审查与可重复的离线验证流程。

Stars: 29 | Forks: 0

# LHash ![LHash Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0c2f7d6f7f071510.png) ![Windows Build](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/29561086b8071511.svg) ![License](https://img.shields.io/badge/license-GPL--2.0-blue.svg) ![Platform](https://img.shields.io/badge/platform-Windows-0078D6) ## Windows 上的可信本地验证 LHash 是一个以安全为先的 Windows 本地文件验证工具,适用于本地文件、发布包和可重复的完整性检查。 它面向希望回答实际信任问题的用户,例如: - 这个下载的文件是否被修改过? - 这个发布包是否仍与预期的工件匹配? - 是否可以在不上传任何内容的情况下本地验证文件? - 能否为后续审查或证据保存生成可重复的结果? 维护版本线将 LHash 从传统的哈希工具转变为 **可信验证工具**,具备更安全的本地默认设置、更清晰的执行边界和更可审查的发布姿态。 ## 当前发布线 - 当前版本:`[v1.12.1](https://github.com/lhy8888/Lhash/releases/tag/v1.12.1)` - 下载:`[GitHub Releases](https://github.com/lhy8888/Lhash/releases)` - 主分支:`future-winui-was2` - CI:`[Windows Build workflow](https://github.com/lhy8888/Lhash/actions/workflows/windows-build.yml)` - 安全策略:[SECURITY.md](SECURITY.md) - 代码签名:[CODE_SIGNING.md](CODE_SIGNING.md) - 代码签名策略:[CODE_SIGNING_POLICY.md](CODE_SIGNING_POLICY.md) - 许可证说明:`GPL-2.0-only with an OpenSSL linking exception`;参见 [LICENSE-OPENSSL-EXCEPTION.md](LICENSE-OPENSSL-EXCEPTION.md) ## 为什么 LHash 被定位为验证工具 LHash 不仅仅关注快速计算摘要。 它围绕一个核心理念构建:**验证结果本身必须值得信赖**。 这意味着维护版本专注于: - 更安全的本地文件处理 - 并发下的确定性结果 - 对大文件和溢出边界的明确处理 - 更清晰的 UI 代码与验证运行时代码分离 - 可供后续审查的发布和供应链元数据 ## 安全与验证文档 如果您希望以更可审查的形式了解项目的信任模型,请从这里开始: - [文档索引](docs/README.md) - [威胁模型](docs/THREAT_MODEL.md) - [安全模型](docs/SECURITY_MODEL.md) - [发布验证指南](docs/RELEASE_VERIFICATION.md) - [供应链安全](docs/SUPPLY_CHAIN_SECURITY.md) ## 安全模型要点 ### 默认本地优先 LHash 适用于本地验证工作流。 - 无需账户 - 无需遥测 - 默认不上传文件内容 - 默认不上传哈希到第三方服务 ### 更安全的路径处理 默认情况下,LHash 拒绝高风险路径类型,例如: - 符号链接 - 联接点 - 重解析点 这可减少意外的信任错误、权限意外和向敏感路径的意外遍历。 ### 负载下的验证稳定性 LHash 使用: - 每个任务独立的哈希上下文 - 无共享的可变静态哈希状态 - 检查整数转换和 64 位文件大小处理 - RAII 风格的资源所有权 目标不仅是速度,而是在真实工作负载下实现可重复、可审查的结果。 ## 工具的适用场景 LHash 适用于: - 在使用前验证下载的软件包 - 检查 GitHub Releases 的发布工件 - 确认存档文件或证据副本未被修改 - 本地目录的批量验证 - 在交付或交接期间比较预期与实际摘要 ## 工具不试图成为什么 LHash 并不是作为一个完整的可信框架来呈现。 哈希只能证明内容与摘要匹配。它本身**不能**证明发布者身份。 因此,该仓库也在向以下方向演进: - 代码签名清晰度 - 发布校验和公布 - GitHub 原生工件证明 - 发布 SBOM 公布 这些共同使项目在作为可信验证工具方面更有用,而不仅仅是一个快速的哈希计算器。 ## 支持的算法 ### 加密哈希 - MD5 - SHA-1 - SHA-256 - SHA-512 ### 现代高性能哈希 - BLAKE3-256 - BLAKE3-512 ### OpenSSL 3 扩展算法 - SHA-256 - SHA-384 - SHA-512 - SHA3-256 - SHA3-384 - SHA3-512 - BLAKE2b-512 - BLAKE2s-256 - SHAKE128-256 - SHAKE256-512 ### 非加密校验和 - XXHash3-64 - XXHash3-128 - CRC32C ## 架构方向 维护版本已被重构为更清晰的层次: ``` NativeCore - Domain - Runtime - Algorithms - Common Adapters - UiBridge WinMFC LegacyCompat third_party ``` 这使得信任边界、执行行为和未来的接口扩展更容易进行推理。 ## 路线图方向 近期内强化验证定位的路线图事项包括: - 更强的发布验证文档 - 发布上更广泛的供应链元数据 - 可重复验证流程的 CLI 模式 - 更清晰的威胁模型文档 - 在托管和本地代码中的更深入静态分析覆盖 ## 一句话定位 **LHash 是一个用于本地完整性检查、可重复审查和更安全发布验证的 Windows 可信验证工具。**
标签:GPL-2.0, Windows安全工具, Windows平台, 代码签名, 信任边界, 发布审查, 可视化界面, 哈希校验, 大文件处理, 安全测试工具, 并发安全, 数字取证, 文件变更检测, 文件完整性校验, 本地验证, 确定性结果, 离线验证, 自动化脚本, 证据保留, 重复性验证