文章加密功能使用指南
文章加密功能使用指南
Demius 主题提供了强大的文章加密功能,支持全文加密和部分内容加密两种模式,让您可以保护敏感内容。
📋 目录
✨ 功能特性
🔐 双模式加密
全文加密
- 整篇文章内容需要密码才能查看
- 全屏遮罩层显示密码输入界面
- 适合私密文章、会员专享内容
部分内容加密
- 文章中特定部分需要密码查看
- 其他内容正常显示
- 适合隐藏答案、敏感信息
🎨 精美界面
- 🔒 锁图标动画效果
- 💫 平滑展开/收起动画
- 🌓 完整的暗色模式支持
- 📱 完美的移动端适配
🔒 安全性
- 🔐 使用 SHA256 哈希存储密码
- 💾 解锁状态仅在当前会话有效(sessionStorage)
- 🚫 密码不会明文存储在源代码中
📍 卡片标识
- 🏷️ 文章列表自动显示加密标识
- 🎯 与置顶标识对称排列
- 🎨 渐变色背景,美观醒目
🔒 全文加密
基本用法
在文章的 Front Matter 中添加 password 参数:
---
title: "我的私密日记"
date: 2025-10-28
password: "mySecretPassword123"
---
这里是需要加密的文章内容...自定义提示文字
可以使用 passwordHint 参数自定义提示文字:
---
title: "VIP会员专享内容"
date: 2025-10-28
password: "vip2025"
passwordHint: "此内容仅对VIP会员开放,请输入会员密码"
---
VIP专享内容...效果预览
访问加密文章时,会显示全屏遮罩层:
┌─────────────────────────────────────┐
│ │
│ 🔒 │
│ │
│ 🔒 文章已加密 │
│ │
│ 此文章已加密,请输入密码查看完整内容 │
│ │
│ ┌─────────────┐ ┌──────┐ │
│ │ 密码输入框 │ │ 解锁 │ │
│ └─────────────┘ └──────┘ │
│ │
└─────────────────────────────────────┘文章列表显示
在文章卡片左上角会显示"全文加密"标识:
┌────────────────────────────────┐
│ 📌 置顶 🔒 全文加密 │
│ │
│ 封面图片 │
│ │
│ 文章标题 │
│ 文章摘要... │
└────────────────────────────────┘🔐 部分内容加密
基本用法
使用 encrypt shortcode 包裹需要加密的内容:
---
title: "考试题目与答案"
date: 2025-10-28
encrypted: true # 标记文章包含加密内容,显示"部分加密"标识
---
## 题目
1. 什么是Hugo?
2. 如何创建新文章?
## 答案
{{}}
1. Hugo是一个用Go编写的静态网站生成器
2. 使用命令:`hugo new posts/my-post.md`
{{}}自定义提示文字
可以使用 hint 参数自定义提示文字:
{{}}
这里是加密的内容...
{{}}多个加密块
一篇文章可以有多个加密块,每个使用不同的密码:
## 第一部分(密码:123)
{{}}
第一部分的加密内容
{{}}
## 第二部分(密码:456)
{{}}
第二部分的加密内容
{{}}效果预览
加密块在文章中的显示效果:
┌─────────────────────────────────────┐
│ │
│ 🔒 │
│ │
│ 🔐 此部分内容已加密,请输入密码查看 │
│ │
│ ┌─────────────┐ ┌──────┐ │
│ │ 密码输入框 │ │ 解锁 │ │
│ └─────────────┘ └──────┘ │
│ │
└─────────────────────────────────────┘输入正确密码后,加密块展开显示内容:
┌─────────────────────────────────────┐
│ │
│ 解密后的内容在这里显示... │
│ 支持所有Markdown格式 │
│ - 列表 │
│ - 代码块 │
│ - 图片、链接等 │
│ │
└─────────────────────────────────────┘⚙️ 配置说明
全局配置
在 hugo.toml 中配置加密功能:
[params.encryption]
enable = true # 是否启用加密功能
fullHint = "🔒 此文章已加密,请输入密码查看完整内容" # 全文加密提示
partialHint = "🔐 此部分内容已加密,请输入密码查看" # 部分加密提示
wrongPasswordHint = "❌ 密码错误,请重试" # 密码错误提示配置项说明
| 配置项 | 说明 | 默认值 |
|---|---|---|
enable | 是否启用加密功能 | true |
fullHint | 全文加密的提示文字 | "🔒 此文章已加密,请输入密码查看完整内容" |
partialHint | 部分加密的提示文字 | "🔐 此部分内容已加密,请输入密码查看" |
wrongPasswordHint | 密码错误的提示文字 | "❌ 密码错误,请重试" |
Front Matter 参数
全文加密:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
password | String | 是 | 文章密码 |
passwordHint | String | 否 | 自定义提示文字,覆盖全局配置 |
部分加密标识:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
encrypted | Boolean | 否 | 标记文章包含加密内容,显示"部分加密"标识 |
Shortcode 参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
password | String | 是 | 加密块密码 |
hint | String | 否 | 自定义提示文字,覆盖全局配置 |
💡 高级技巧
1. 嵌套 Markdown
加密内容支持完整的 Markdown 语法:
{{}}
## 标题
这是**粗体**和*斜体*文字。
- 列表项1
- 列表项2
\`\`\`python
print("Hello, World!")
\`\`\`

{{}}2. 组合使用
可以在全文加密的文章中再使用部分加密(多层密码保护):
---
title: "多层加密示例"
password: "level1"
---
这是第一层加密的内容...
{{}}
这是第二层加密的内容
{{}}3. 密码提示
在文章中可以给出密码提示:
---
title: "有提示的加密文章"
password: "2025"
---
{{}}
加密内容...
{{}}4. 安全的密码选择
建议:
- ✅ 使用足够长的密码(8位以上)
- ✅ 混合使用字母、数字、符号
- ✅ 避免使用常见词汇
- ❌ 不要使用
123456、password等弱密码
❓ 常见问题
Q1: 密码会被泄露吗?
A: 密码使用 SHA256 哈希存储,不会明文显示在网页源代码中。但由于是静态网站,有技术经验的人可以通过查看源代码获取哈希值。此功能主要用于:
- 内容分级访问
- 防止搜索引擎索引
- 基础的内容保护
不适合用于:
- 高度敏感的机密信息
- 需要服务器端验证的场景
Q2: 解锁后刷新页面需要重新输入密码吗?
A: 是的。解锁状态保存在 sessionStorage 中,关闭标签页或浏览器后会失效,下次访问需要重新输入密码。
Q3: 可以同时使用全文加密和部分加密吗?
A: 可以!在全文加密的文章中可以再添加部分加密块,实现多层密码保护。
Q4: 加密功能支持 PJAX 吗?
A: 完全支持!PJAX 切换页面后会自动重新初始化加密功能。
Q5: 如何修改加密标识的样式?
A: 加密标识的样式定义在 _encryption.css 中的 .encryption-badge 类。可以通过修改CSS自定义颜色、大小等。
Q6: 密码错误次数有限制吗?
A: 目前没有限制。用户可以无限次尝试,直到输入正确密码。
Q7: 如何在不同文章中使用相同密码?
A: 直接在多篇文章的 Front Matter 中使用相同的 password 值即可:
# 文章1
---
password: "sharedSecret"
---
# 文章2
---
password: "sharedSecret"
---Q8: 加密的文章会被搜索引擎收录吗?
A: 全文加密的文章,加密内容在HTML中是隐藏的,搜索引擎无法索引加密内容。但文章标题、摘要等非加密部分仍会被收录。
Q9: 移动端体验如何?
A: 完全优化了移动端体验:
- 响应式输入框
- 触摸友好的按钮
- 自适应的遮罩层
Q10: 可以查看有多少人解锁了文章吗?
A: 目前不支持。由于是静态网站,无法在服务器端统计解锁次数。
🎨 样式定制
修改加密标识颜色
编辑 themes/demius/assets/css/_encryption.css:
.post-card .encryption-badge {
background: linear-gradient(135deg, #your-color-1 0%, #your-color-2 100%);
}修改锁图标颜色
.encryption-icon {
color: #your-color;
}修改按钮样式
.encryption-submit {
background: #your-color;
}
.encryption-submit:hover {
background: #your-hover-color;
}📝 完整示例
示例1:全文加密的会员文章
---
title: "VIP专享:2025年投资策略"
date: 2025-10-28
categories: ["投资"]
tags: ["VIP", "策略"]
password: "vip2025premium"
passwordHint: "请输入VIP会员密码(提示:vip+年份+premium)"
cover: "investment.jpg"
---
# 2025年投资策略详解
(此处为VIP会员专享内容)
## 1. 宏观经济分析
...
## 2. 投资建议
...示例2:部分加密的教程文章
---
title: "Python编程练习题"
date: 2025-10-28
categories: ["编程"]
tags: ["Python", "练习"]
encrypted: true
---
## 练习题
### 题目1:实现斐波那契数列
编写一个函数,返回斐波那契数列的前n项。
### 答案
{{}}
\`\`\`python
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
fib = [0, 1]
for i in range(2, n):
fib.append(fib[i-1] + fib[i-2])
return fib
# 测试
print(fibonacci(10))
\`\`\`
**解析:** 使用动态规划的思想,每一项都是前两项的和。
{{}}
### 题目2:...🔧 故障排查
问题:输入正确密码无法解锁
可能原因:
- 密码大小写错误
- 密码包含特殊字符未正确转义
- 浏览器不支持 SHA256
解决方法:
- 检查密码是否完全一致(区分大小写)
- 尝试使用简单的字母数字密码
- 更新浏览器到最新版本
问题:加密标识不显示
可能原因:
- 未在 Front Matter 中添加
encrypted: true(部分加密) - 未添加
password参数(全文加密) - CSS 未正确加载
解决方法:
- 检查 Front Matter 配置
- 清除浏览器缓存
- 检查控制台是否有CSS加载错误
问题:PJAX 切换后加密功能失效
可能原因:
- PJAX 未正确调用
initEncryption() - 事件监听器未正确绑定
解决方法:
- 检查
_simple-pjax.js中是否包含加密初始化代码 - 刷新页面重新加载
📚 相关文档
最后更新:2025-10-28
适用版本:Demius v2.6.0+
