SignKit 是一款纯前端 PDF 签名工具:上传文档、手写签名、添加字段、导出成品,全程在浏览器内完成,无需安装任何软件。可选启用账号云同步,所有数据端到端加密,服务器仅存储密文。
在线体验:https://pipicore.cn/sign/
签名画板书写,笔迹自动保存到全局签名库。签名跨文档复用——再次使用时直接从"我的签名"中选取,无需重画。签名库支持删除管理。
日期、文本、勾选三种字段类型,点击工具栏即可添加,拖动定位到任意位置。
选中签名后,手指在页面任意位置即可拖动或双指等比缩放签名,无需精确点击签名本身;拖动期间页面滚动自动冻结,交互不冲突。
导出前可编辑文件名,默认取文档名。iOS 环境走系统分享面板(存到文件 / 发送),微信内置浏览器同样可用。
- 注册账号后,文档与签名自动双向同步(登录 / 启动 / 编辑返回时触发)
- 数据在浏览器内加密后上传,服务器仅存储密文,无法读取内容
- 换设备登录同一账号,数据自动拉回
登录状态与加密密钥持久化在设备本地,刷新或重开浏览器无需重新登录,启动即自动恢复并同步。
文件列表管理所有文档,支持删除(本地与云端同步)。
- 打开页面,上传 PDF 文档
- 点击右下角 + 打开工具栏,选择签名 / 日期 / 文本 / 勾选
- 签名:在画板书写 → 使用签名 → 拖动 / 缩放定位
- 导出:点击导出 → 编辑文件名 → 确认(iOS 走分享面板)
- 注册账号后,以上操作自动同步到云端
- 前端:任意静态服务器(nginx / GitHub Pages / 对象存储),无构建步骤
- 后端(可选,云同步用):Node.js ≥ 16,零第三方依赖
git clone https://github.com/chenyynx/signkit.git
# 将 signkit/ 目录部署到静态服务器即可依赖(pdf.js / signature_pad / pdf-lib / crypto-js)已包含在仓库内。
node signkit-server/server.js默认监听 8788 端口,数据存放于 signkit-data/ 目录(JSON 元数据 + 密文文件)。提供接口:
| 接口 | 说明 |
|---|---|
POST /api/register |
注册(返回 JWT 与密钥盐) |
POST /api/login |
登录 |
GET /api/documents |
文档列表 |
POST /api/documents |
上传 / 覆盖文档(密文) |
GET /api/documents/:id |
下载文档 |
DELETE /api/documents/:id |
删除文档 |
location /sign-api/ {
rewrite ^/sign-api/(.*)$ /api/$1 break;
proxy_pass http://127.0.0.1:8788;
client_max_body_size 20m;
}- 密钥派生:密码 + 服务器下发的盐 → PBKDF2(SHA-256,10000 次迭代)→ 64 字节密钥(前 32 字节 AES 密钥,后 32 字节 HMAC 密钥)
- 加密:AES-256-CTR(随机 16 字节计数器)+ HMAC-SHA256 完整性校验(Encrypt-then-MAC)
- 双实现互通:原生 WebCrypto 与 crypto-js 纯 JS 实现输出格式一致。微信内置浏览器(XWeb 内核 WebCrypto 不可靠)自动切换纯 JS 实现,与 Safari 数据互通
- 盐跟随账号:盐由服务器注册时生成、登录时下发,换设备可派生同一密钥
- 密码存储:服务器仅保存 scrypt 哈希;加密密钥仅持久化于设备本地
- 数据防护:服务器拒绝过小密文(<100 字节),防止客户端异常数据覆盖云端
signkit/
├── index.html # 单页入口
├── app.js # 业务逻辑(手势 / 字段 / 导出 / 同步集成)
├── sync.js # 云同步:登录 + 端到端加密(双实现互通)
├── style.css # DocuSeal 风格视觉
├── vendor/ # crypto-js(微信降级加密)
├── fonts/ # Playfair Display 标题字体(自托管)
├── docs/screenshots/ # README 配图
└── signkit-server/ # 云同步后端(零依赖 Node)
| 层 | 技术 |
|---|---|
| 前端 | 原生 HTML / CSS / JS(ES Module),零构建 |
| PDF 渲染 | pdf.js(每页转图连页显示) |
| 手写签名 | signature_pad 5.1.4(DPR 高清) |
| PDF 导出 | pdf-lib |
| 加密 | WebCrypto(原生)/ crypto-js(降级) |
| 后端 | Node.js 内置 http + crypto,零第三方依赖 |
| 本地存储 | IndexedDB(文档)+ localStorage(字段 / 签名库 / 登录态) |
CC BY-NC 4.0 — 署名-非商业。允许个人使用与二次开发(需署名),禁止商用。





