hexo-encrypt

hexo-encrypt

milkmoli Lv1

Hexo 文章加密插件:轻松为你的博客添加密码保护

你是否想在 Hexo 博客中发布一些仅限特定读者查看的内容?例如私人日记、付费教程或内部资料?本文将详细介绍一款自制的轻量级加密插件,它能为指定文章添加密码保护,并提供优雅的解锁交互,支持记忆密码、自动锁定等功能。


🚀 插件特点

  • 简单易用 – 仅需在 _config.yml 或文章 Front-matter 中配置密码,即可生效。
  • 美观交互 – 双线输入框,浮动标签,透明卡片,适配深色主题。
  • 多密码支持 – 可设置多个密码,任意一个正确即可解锁。
  • 灵活记忆 – 支持会话记忆(关闭浏览器即失效)和定时记忆(如 12 小时、7 天)。
  • 自动锁定 – 记忆时间到期后自动重新加密,保障隐私。
  • 重新加密 – 阅读后一键恢复加密状态,防止他人偷窥。
  • 错误限制 – 最多尝试 3 次,超时锁定输入框,防止暴力破解。

⚙️ 配置

全局配置(_config.yml

参数 类型 默认值 描述
password string / array 必填 一个或多个密码
errmsg string '密码错误' 错误提示文字
max_tries number 3 最大错误尝试次数
all_post boolean false 是否加密所有文章
remember boolean / string false 记忆模式:true(定时)、'session'(会话)、false(不记忆)
remember_days number 7 记忆天数(仅当 remember: true

示例:

1
2
3
4
5
6
7
8
encrypt:
password: '123456' # 单密码
# password: ['pwd1', 'pwd2'] # 多密码
errmsg: '密码错误,请重试'
max_tries: 5
all_post: false
remember: true
remember_days: 1 # 记忆1天

单篇文章覆盖(Front-matter)

在需要加密的文章顶部添加:

1
2
3
4
5
6
7
---
title: 我的秘密日记
encrypt: true # 启用加密
enc_pwd: 'mysecret' # 覆盖全局密码
abstract: '请输入密码查看' # 可自定义提示(若插件支持)
remember: 'session' # 仅本次会话有效
---

🔐 使用方式

访问加密文章

  1. 进入文章页面,你会看到一个简洁的密码输入框。
  2. 输入正确密码(支持回车提交),文章内容即刻显示。
  3. 阅读完毕后,可点击文章末尾的 “加密” 按钮,立即隐藏内容并重新锁定。

记忆功能

  • 会话记忆remember: 'session'):关闭浏览器标签页或整个浏览器后,缓存自动清除,再次访问需重新输入密码。
  • 定时记忆remember: true + remember_days: N):在 N 天内,同一设备打开文章无需再次输入密码;超过时限则自动锁定。
  • 关闭记忆remember: false):每次访问都必须输入密码。

💡 提示:记忆功能基于浏览器的 localStoragesessionStorage,仅对当前设备有效,请勿在公共电脑上启用长期记忆。


🎨 自定义样式

插件采用纯 CSS 编写,你可以轻松调整外观。以下是一些常用修改:

修改“请输入密码”文字样式

在插件 CSS 中找到:

1
2
3
4
5
.input-wrapper label {
font-size: 1.5rem; /* 修改大小 */
font-weight: bold; /* 修改粗细 */
color: #aaa; /* 修改颜色 */
}

调整解密按钮宽度

1
2
3
.decrypt-btn {
width: 30%; /* 可改为 100% 或固定宽度 */
}

更改双线颜色

1
2
3
4
.input-wrapper {
border-top: 1px solid #d0d0d0; /* 上细线 */
border-bottom: 2px solid #d0d0d0;/* 下粗线 */
}

深色模式适配

插件已内置对 .dark 类的支持,如果你的主题使用其他类名,可自行调整 CSS 中的选择器。


📝 完整插件源码

将以下代码保存为 scripts/encrypt.js


⚠️ 注意事项

  1. 安全性:加密基于 AES-256-CBC,但所有逻辑在客户端执行,仅适合轻度保护,请勿用于高敏感内容。
  2. 兼容性:需要浏览器支持 localStoragesessionStorage(现代浏览器均支持)。
  3. 主题适配:深色模式依赖 .dark 类,如果你的主题使用其他类名(如 dark-mode),请修改 CSS 中的选择器。
  4. 多密码:配置多密码时,任意一个正确即可解锁,适用于团队共享场景。
  5. 缓存清理:若遇显示异常,尝试清除浏览器缓存或点击“加密”按钮手动重置。

🎯 结语

通过这个小插件,你可以轻松为 Hexo 文章增加密码屏障,兼顾隐私保护与用户体验。无论是分享给特定好友,还是作为付费内容的预览,它都能派上用场。

  • 标题: hexo-encrypt
  • 作者: milkmoli
  • 创建于 : 2026-06-25 00:00:00
  • 更新于 : 2026-06-25 17:46:21
  • 链接: https://milkmoli.github.io/2026/06/25/hexo-encrypt/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。