对 Hexo 博客文章进行加密

写在前面

  • 有时候我们可能需要写一些私密的博客,通过密码验证的方式让人不能随意浏览。

  • 这在wordpress,emlog或其他博客系统中都很容易实现,然而hexo除外。:(

  • 为了解决这个问题,我们需要安装“ hexo-blog-encrypt”扩展。

特性

  • 一旦你输入了正确的密码,它就会被存储在本地浏览器的localStorage中。按个按钮,密码将会被清空。若博客中又脚本,它将被正确地执行。

  • 支持按标签加密。

  • 所有的核心功能都是由原生的API所提供的。在Node.js中,我们使用Crypto。在浏览器中,我们使用Web Crypto API。

  • PBKDF2,SHA256被用作复制密钥,AES256-CBC被用作加解密,我们还使用HMAC来验证密文的来源,并确保其纠正。

  • 广泛地使用Promise来进行异步操作,从而确保线程不被杜塞。

  • 过时的浏览器将无法正常显示,因此,请升级您的浏览器。

安装

npm install --save hexo-blog-encrypt

快速使用

  • 将“ password”添加到您的文章信息头就像这样
```javascriptj
title: Hello World
date: 2020-03-13 21:12:21
password: muyiio
---
```

按标签加密

  • 修改文章信息头如下:
title: Hello World
tags:
- 加密文章tag
date: 2020-03-13 21:12:21
password: muyiio
abstract: 这里有东西被加密了,需要输入密码查看哦。
message: 您好,这里需要密码。
wrong_pass_message: 抱歉,这个密码看着不太对,请再试试。
wrong_hash_message: 抱歉,这个文章不能被纠正,不过您还是能看看解密后的内容。
---
  • 对博客根目录_config添加如下字段:
# 安全
encrypt: # hexo-blog-encrypt
  abstract: 这里有东西被加密了,需要输入密码查看哦。
  message: 您好, 这里需要密码.
  tags:
  - {name: tagName, password: 密码A}
  - {name: tagName, password: 密码B}
  template: 
wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试. wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.

对 TOC 文章进行加密

如果您有一篇文章使用了TOC,您需要修改模板的部分代码。这里以matery主题作为示例:

  • hexo/themes/matery/layout/_partial/article.ejs找到article.ejs

  • 然后找到<%post.content%>这段代码,通常在30行左右。

  • 使用如下的代码来替代它:

<% if(post.toc == true){ %>
  
style="display:none" <% } %>> Index <% if (post.encrypt == true) { %> <%- toc(post.origin, {list_number: true}) %> <% } else { %> <%- toc(post.content, {list_number: true}) %> <% } %>
<% } %> <%- post.content %>

声明

本文转载自作者MikeCoderhexo-blog-encrypt项目,对有些地方略有修改。

项目地址:https://github.com/MikeCoder/hexo-blog-encrypt

发现这个还是挺好玩的~


   转载规则


《对 Hexo 博客文章进行加密》 Tyzhao 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录