参考: https://github.com/MikeCoder/hexo-blog-encrypt
Hexo会将我们本地编写好的markdown文章进行编译,然后生成静态页面部署到服务器之中。
但有些文章我们不希望公开,希望将文章进行加密,用户只有输入正确的验证码之后,才能进行访问。
这种情况,wordpress、emlog等其他博客系统很容易进行设置,但是Hexo却不行。
为了解决这个需求,我们需要引入hexo-blog-encrypt 。
特性
一旦你输入了正确的密码, 它将会被存储在本地浏览器的localStorage中。再次访问,不需输入密码。
支持按标签加密。
所有的核心功能都是由原生的API所提供的。 在 Node.js中, 我们使用 Crypto。在浏览器中, 我们使用 Web Crypto API。
PBKDF2, SHA256 被用于分发密钥, AES256-CBC 被用于加解密, 还使用 HMAC 来验证密文的来源, 并确保其未被篡改。
广泛地使用 Promise 来进行异步操作, 以此确保线程不被杜塞。
过时的浏览器将不能正常显示, 因此, 请升级浏览器。
安装
快速使用
将 “password” 字段添加到文章信息头:
1 2 3 4
| title: Hello World date: 2016-03-30 21:18:02 password: abcd1234xxx ---
|
再使用hexo clean && hexo g && hexo s在本地预览加密的文章。
设置优先级
文章信息头 > 按标签加密
高级设置
文章信息头
1 2 3 4 5 6 7 8 9 10
| title: Hello World tags: - 加密文章tag date: 2019-10-26 20:22:58 password: mikemessi abstract: 该文章已加密, 请输入密码查看。 message: 该文章已加密, 请输入密码查看。 wrong_pass_message: 密码不正确,请重新输入! wrong_hash_message: 文章不能被校验, 不过您还是能看看解密后的内容! ---
|
_config.yml
示例
1 2 3 4 5 6 7 8 9 10 11
|
encrypt: abstract: 有东西被加密了, 请输入密码查看. message: 您好, 这里需要密码. tags: - {name: tagName, password: 密码A} - {name: tagName, password: 密码B} template: <div id="hexo-blog-encrypt" data-wpm="{{hbeWrongPassMessage}}" data-whm="{{hbeWrongHashMessage}}"><div class="hbe-input-container"><input type="password" id="hbePass" placeholder="{{hbeMessage}}" /><label>{{hbeMessage}}</label><div class="bottom-line"></div></div><script id="hbeData" type="hbeData" data-hmacdigest="{{hbeHmacDigest}}">{{hbeEncryptedData}}</script></div> wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试. wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.
|
注:若文章中采用_config.yml中的全局配置,则文章的tags只能有一个,若有多个tags,则失效。
配置优先级
文章信息头 > _config.yml (站点根目录下的) > 默认配置