加密文章
ShokaX 支持对文章内容进行加密保护。加密在构建时完成,密码不会发送到服务器——所有解密操作在浏览器本地完成。
创建加密文章
Section titled “创建加密文章”在文章 frontmatter 中添加两个字段:
---title: 私人笔记date: 2026-06-01encrypted: truepassword: "my-secret-key"---
这是一篇加密文章的内容,构建后会被加密。在浏览器中需要输入正确密码才能查看。核心字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
encrypted | boolean | 必填,设为 true 开启加密 |
password | string | 必填,加密密码(构建时使用) |
当文章标记为 encrypted: true 后:
- 文章列表页会显示密码锁图标 :lock:,标题正常展示
- 点击进入文章页后,不会显示正文内容
- 页面会弹出一个密码输入框
- 输入正确密码后,正文内容即时解密显示
加密技术细节
Section titled “加密技术细节”ShokaX 使用浏览器原生的 Web Crypto API 进行加密:
- 算法:AES-GCM-256
- 密钥派生:PBKDF2(100,000 次迭代,SHA-256)
- 加密时机:构建时(Node.js / Bun 环境)
- 解密时机:浏览器运行时(客户端)
密码 → PBKDF2 派生密钥 → AES-GCM 加密文章内容 ↓ 加密后的内容嵌入 HTML ↓ 浏览器输入密码 → PBKDF2 派生密钥 → AES-GCM 解密加密文章的侧边栏目录
Section titled “加密文章的侧边栏目录”加密文章在未解密前,侧边栏目录(TOC)也会被隐藏。输入密码解密后,TOC 自动出现。这确保了目录也不会泄露文章结构信息。
加密文章的限制
Section titled “加密文章的限制”| 限制 | 说明 |
|---|---|
| 搜索引擎 | 加密文章内容不会被搜索引擎索引(仅标题可见) |
| RSS | 加密文章不会出现在 RSS feed 中 |
| Pagefind 搜索 | 加密文章正文不会被搜索索引 |
| 静态生成 | 文章页面正常生成,但正文以密文形式嵌入 |
Q: 可以为不同文章设置不同的密码吗?
Section titled “Q: 可以为不同文章设置不同的密码吗?”可以。每篇文章的 password 字段是独立的,互不影响。
Q: 加密后还可以修改密码吗?
Section titled “Q: 加密后还可以修改密码吗?”可以。修改 password 字段后重新构建,文章会用新密码重新加密。
Q: 忘记密码怎么办?
Section titled “Q: 忘记密码怎么办?”目前没有密码找回机制。密码仅存在于你的配置文件中,请妥善保管。
Q: 加密会影响构建速度吗?
Section titled “Q: 加密会影响构建速度吗?”加密使用高效的 AES-GCM 算法,对单篇文章的影响可忽略不计。即使是大量加密文章,构建时间增加也很有限。
津公网安备 12011402001353 号