Hexo文章加密功能配置
前言
在搭建个人博客的过程中,有时候我们需要对某些文章进行加密保护,比如面试笔记、私人日记等敏感内容。本文将详细介绍如何使用 hexo-blog-encrypt 插件为 Hexo 博客添加文章加密功能,并实现按分类自动加密。
一、安装加密插件
首先需要安装 hexo-blog-encrypt 插件:
1 | npm install hexo-blog-encrypt --save |
安装完成后,插件会自动注册到 Hexo 的过滤器系统中。
二、基础配置
2.1 站点配置
在站点根目录的 _config.yml 文件中添加加密配置:
1 | # hexo-blog-encrypt 文章加密配置 |
注意:配置字段名必须是 encrypt,而不是 hexo_blog_encrypt。
2.2 配置项说明
| 配置项 | 说明 | 默认值 |
|---|---|---|
abstract |
加密文章显示的提示文字 | “Here’s something encrypted…” |
wrong_pass_message |
密码错误时的提示 | “Oh, this is an invalid password…” |
theme |
加密页面主题 | “default” |
silent |
是否禁用日志 | false |
autoSave |
是否自动保存密码到 localStorage | false |
三、单篇文章加密
3.1 手动加密
在文章的 front-matter 中添加 password 字段即可加密:
1 |
|
3.2 按标签加密
也可以为特定标签设置密码:
1 | # _config.yml |
四、分类自动加密
4.1 需求场景
如果我们希望某个分类下的所有文章都自动加密,而不是每篇文章手动添加 password 字段,可以通过自定义脚本实现。
4.2 创建加密脚本
在 scripts/ 目录下创建 auto-encrypt.js 文件:
1 | // 自动为指定分类的文章注入加密密码 |
4.3 创建环境变量文件
在站点根目录创建 .env 文件存放密码:
1 | # 文章加密密码(此文件不会被提交到 Git) |
4.4 配置 .gitignore
确保 .env 文件不会被提交到 Git:
1 | # .gitignore |
五、GitHub Actions 配置
5.1 添加仓库 Secrets
- 进入 GitHub 仓库的 Settings > Secrets and variables > Actions
- 点击 New repository secret
- 添加:
- Name:
ENCRYPT_SUMMERINTERNSHIPINTERVIEWEXPERIENCE - Secret:
你的密码
- Name:
5.2 修改 Workflow 文件
在 .github/workflows/ 目录下的 workflow 文件中,添加环境变量:
1 | jobs: |
六、工作原理
6.1 加密流程
- Hexo 构建时,
auto-encrypt.js脚本会在文章渲染前执行 - 脚本检查文章的
categories字段 - 如果文章属于配置的加密分类,自动注入
password字段 hexo-blog-encrypt插件检测到password字段后,对文章内容进行加密
6.2 密码读取优先级
1 | 环境变量 > .env 文件 > 空字符串 |
- 本地开发:从
.env文件读取密码 - GitHub Actions:从 Secrets 环境变量读取密码
6.3 加密算法
插件使用 AES-256-GCM 加密算法,配合 PBKDF2-SHA256 密钥派生函数,安全性较高。
七、使用方式
7.1 本地开发
- 编辑
.env文件设置密码 - 运行
npx hexo server预览 - 访问加密文章时输入密码即可查看
7.2 添加新的加密分类
- 在
auto-encrypt.js中添加分类和环境变量名:
1 | const defaultPasswords = { |
- 在
.env和 GitHub Secrets 中添加对应的密码
7.3 文章分类设置
确保文章的 front-matter 中设置了正确的分类:
1 |
|
八、常见问题
8.1 配置不生效
- 确保配置字段名是
encrypt,不是hexo_blog_encrypt - 配置应放在
_config.yml(站点根目录),而不是_config.butterfly.yml - 执行
npx hexo clean清理缓存后重新生成
8.2 GitHub Actions 构建失败
- 检查 Secrets 是否正确配置
- 确认环境变量名与脚本中一致
- 查看构建日志排查具体错误
8.3 密码忘记
- 本地开发:查看
.env文件 - 线上部署:查看 GitHub Secrets
总结
通过 hexo-blog-encrypt 插件和自定义脚本,我们可以轻松实现 Hexo 博客的文章加密功能:
- 插件安装:
npm install hexo-blog-encrypt --save - 配置文件:在
_config.yml中添加encrypt配置 - 自动加密:通过
auto-encrypt.js脚本实现分类自动加密 - 密码管理:使用
.env文件(本地)和 GitHub Secrets(线上)
这样既能保护私密文章,又不会将密码暴露在代码仓库中。
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Lay's Blog!
评论
