零后端的静态网页加密保护工具 —— 用密码把 HTML 变成「自解密页面」
video.mp4
功能特性 · 快速开始 · 工作原理 · CLI · Web GUI · 安全说明 · FAQ
StaticShield 把单个 HTML(或整站打包后)用 AES-256 加密成一份自包含的 .html:没有密码时只显示加密保护页,输入正确密码才在浏览器端还原原始内容。适合内部文档、付费内容预览、临时私密页面等「门禁式」访问控制。
💜 觉得有用?欢迎给个 ⭐ Star 支持:github.com/wangshengithub/staticshield
- 单文件 / 多文件网页加密:单个 HTML 直接加密;
--bundle可把整站(HTML + css/js/图片)内联打包后加密 - 本地 CLI + Web GUI:命令行批量处理,或浏览器图形界面(本地后端,支持多客户端并行)
- 浏览器端实时解密,零后端:产物是自包含 HTML,部署到 GitHub Pages / 对象存储 / Nginx 等任意静态托管即可
- 随机密码生成:CSPRNG 生成强密码(默认 8 位,含数字 + 大小写字母),告别弱密码
- 记住我 / 分享链接 / 密码提示:本机免重复输入;URL Hash 自动解密链接;可选提示文案
- 重叠加密:对已加密产物再次加密,多层独立密码逐层剥解
- 卡片风解密页:默认沿用原网页 favicon 作 Logo,自定义错误提示(非原生 alert),配色统一
| 项 | 值 |
|---|---|
| 对称加密 | AES-256-CBC(PKCS#7 填充) |
| 密钥派生 | PBKDF2-SHA256(默认)/ SHA-512,迭代 1,000,000 次 |
| 完整性 | HMAC-SHA256(Encrypt-then-MAC,先验签后解密,防篡改) |
| 解密端 | 浏览器 WebCrypto,零依赖 |
| 加密端 | 本地 Node.js 脚本(CLI)+ 本地 Web GUI(浏览器图形界面) |
| 运行环境 | Node.js ≥ 18(CLI / GUI 后端),现代浏览器(解密) |
获取工具(零运行时依赖,无需 npm install):
git clone https://github.com/wangshengithub/staticshield && cd staticshield # 或直接下载源码环境要求:Node.js ≥ 18(内置 WebCrypto)。
# 加密单个文件(交互输入密码,不回显)
node encrypt.js page.html
# 多文件 + 指定密码 + SHA-512 + 输出目录
node encrypt.js a.html b.html -p MyPwd123 --sha512 -d ./dist
# 记住我 7 天 + 生成分享链接 + 提示文案
node encrypt.js secret.html --remember 7 --share --hint "我的生日"
# 多文件网页打包加密(HTML + 独立 css/js/图片)
node encrypt.js index.html --bundle -p MyPwd123
# 生成随机密码并用于加密(12 位,自动打印密码)
node encrypt.js page.html --gen-pwd 12
# 仅生成一个随机密码(默认 8 位)
node encrypt.js --gen-pwd
# 打开图形界面(Web GUI)
node encrypt.js --gui加密后生成同名 .html(自解密页面)。直接部署或双击打开,输入密码即可查看。若输出与源文件同路径,会自动改名为 xxx.encrypted.html 以免覆盖源文件。
[加密] 原始 HTML ──(密码 + AES-256 + PBKDF2 + HMAC)──▶ 自解密 .html
[部署] 上传到任意静态托管(GitHub Pages / 对象存储 / CDN / Nginx …)
[解密] 访客打开页面 ──▶ 输入密码 ──▶ 浏览器 WebCrypto 还原原始 HTML
加密端(CLI / GUI 后端)与解密端共用同一份 WebCrypto 加密核心(src/crypto-core.js),产物格式一致、单点维护。
| 参数 | 说明 | 默认 |
|---|---|---|
<filename> |
待加密 HTML 文件,支持多个 | — |
-p, --password <pwd> |