wangshengithub/staticshield

Public

一款安全又便捷的网页加密工具。采用 AES-256 + PBKDF2 百万次迭代 + HMAC 验签,密码与解密全程留在浏览器本地;一条命令或图形界面即可把 HTML(乃至整站 css/js/图片)加密成自解密页面,部署到任意静态托管。Secure, effortless HTML encryption: AES-256, PBKDF2 (1M iterations), HMAC, with fully client-side decryption. Encrypt an entire site (CSS/JS/images) into a self-decrypting file via one command or GUI—deploy anywhere static.

  • Stars240+3 tuần này
  • Forks27
  • Watchers0
  • Issues0
  • Ngày tạo10/07/2026
  • Cập nhật gần nhất26/07/2026
  • Ngôn ngữJavaScript
  • Giấy phép—
README.md23.7 KBRaw

StaticShield

零后端的静态网页加密保护工具 —— 用密码把 HTML 变成「自解密页面」

video.mp4

Stars License AES-256-CBC PBKDF2 Node.js Zero deps

功能特性 · 快速开始 · 工作原理 · 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),产物格式一致、单点维护。

CLI 参数

参数 说明 默认
<filename> 待加密 HTML 文件,支持多个 —
-p, --password <pwd>

Nội dung README thuộc về wangshengithub và cộng đồng đóng góp, giấy phép Không có giấy phép. Nguồn: github.com/wangshengithub/staticshield