验证日期:2026-07-29(Asia/Shanghai)。
- 原始 ZIP 内 61 个受校验文件全部通过 SHA-256。
- 使用固定 SecLists
2026.1和本地源离线重建。 - 默认前端名单:25,000 条;与发布资源逐字节一致。
- 默认 Java 名单:125,691 条;与发布资源逐字节一致。
- 启用可选 Probable Wordlists 后:125,812 条,增量 121 条。
scripts/update_lists.py通过 Python 语法检查。scripts/verify_api_docs.py验证 Java 与 TypeScript 公开符号均出现在对应 API 参考中。scripts/download_hibp.sh通过 Bash 语法检查。
- 完整 API 参考覆盖 27 个公开导出;TypeScript 声明保留 TSDoc,
API.md随 npm 包发布。 - TypeScript strict 编译通过。
- 10 项 Node.js 测试全部通过,覆盖:
- NFC 与不
trim(); - 本地名单、上下文变体、长度与 MFA 策略;
- HIBP 五位前缀、
Add-Padding、失败策略与取消信号; - 配置不变量;
- 一行创建的
createPassGuard()高级 API。
- NFC 与不
npm audit --omit=dev --registry=https://registry.npmjs.org:0 漏洞。npm pack产物:35 个文件,约 129.4 KiB 压缩、290.2 KiB 解压。- 在全新临时项目中从 tarball 安装,ESM 导入和实际弱密码拦截通过。
- 完整 API 参考覆盖 68 个公开类型、常量与业务方法;公开 API 均提供 Javadoc, Javadoc JAR 可由 Maven Central 和 javadoc.io 直接访问。
- Java 包与自动模块名统一为
dev.flyfish.passguard,与 Maven 坐标一致。 - Java 8 目标编译通过,并使用真实 JDK 8 运行全部测试。
- Maven Compiler 3.15.0、Surefire 3.5.6、JAR 3.5.1、Source 3.4.0 已在真实 JDK 8 上完成构建,并在 JDK 21 上完成发布产物验证。
- 9 项 JUnit 测试全部通过,覆盖:
- 完整内置名单加载;
- Unicode、上下文、长度、强度和泄露策略;
- 本地 HTTP 服务器验证 HIBP k-anonymity 请求;
PassGuard高级 API;- Java 8 值对象不可变性与超时参数;
- 50,000 次本地策略性能预算。
mvn -Prelease,ossrh clean verify成功生成:- 主 JAR;
- sources JAR;
- Javadoc JAR;
- POM;
- 上述四项的 GPG 签名。
- 签名密钥指纹:
C4B132940C188FE1C013B3A3DF2CC947BCDF2931。 - JAR 包含
META-INF/LICENSE、META-INF/NOTICE.md、自动模块名和 125,691 条默认名单。 - 从构建 JAR 独立启动
dev.flyfish.passguard.Example通过。
- Dependabot 将 npm、Maven 和 GitHub Actions 的 minor/patch 更新分别分组,减少相互冲突的 PR。
- JUnit 6 要求 Java 17,当前 Java 8 兼容线继续使用 JUnit 5,并忽略其 semver-major 自动更新。
- TypeScript 7 是新的原生编译器主版本;当前发布线继续使用已验证的 TypeScript 5,并忽略其 semver-major 自动更新。
- SHA-256 清单覆盖源码、测试、脚本、文档和密码数据。依赖管理器维护的
package.json、package-lock.json、pom.xml以及 Actions 工作流不重复列入, 由 npm 锁文件完整性、Maven Central 校验和、版本固定和全矩阵 CI 负责验证。 - CI 重新生成清单并要求结果零差异,可同时发现内容变化、遗漏文件和多余条目; Dependabot 仅修改依赖元数据时不会再被无关的清单漂移阻塞。
- JUnit 5.14.4 已在 Java 8/11/17/21/25 矩阵通过;TypeScript 5.9.3 已在 Node.js 20/22/24 矩阵通过。
测试环境:Apple Silicon、Node.js v26.0.0、当前本机 JDK/Maven。
- JavaScript 25,000 条名单初始化:约 8.8 ms。
- JavaScript 纯名单查询:约 24,500,000 次/秒。
- JavaScript 完整本地策略(关闭 zxcvbn/HIBP):约 1,100,000 次/秒。
- Java 50,000 次完整本地策略:约 45–55 ms,低于 5 秒回归预算。
性能数字用于版本回归,不代表所有硬件上的绝对值;启用强度估算和 HIBP 后,总延迟主要由估算器及网络决定。