隐藏
「Hexo插件应用」encrypt插件加密文章 | Bill Yang's Blog

路终会有尽头,但视野总能看到更远的地方。

0%

「Hexo插件应用」encrypt插件加密文章

注意:本人已弃用本插件,改用hexo-blog-encrypt

提出问题

使用过$Hexo$搭建博客的应该都有为加密文章头疼过。
百度里面大多数人都是使用的$js$语句实现的加密功能。
然而那个加密功能有很多$bug$,包括:

  • search.xml依然保留文章内容,可以使用搜索直接获取文章内容
  • 密码明文传输,直接查看网页源代码即可获取密码(本问题可以采用$md5$加密解决)
  • 新标签页打开页面不用输入密码即可进入页面(本问题可以使用$location$定位解决)
  • 源代码未加密,直接下载源代码去掉加密部分即可看到文章内容

有这么多的问题,特别是$1,4$条非常棘手,似乎就没有将网页源码加密以外的方法了。


解决方案

在这里推荐使用一个加密插件hexo-encrypt,本人使用后强烈推荐。

其本人也描述了使用方法并提供了$demo$:传送门


使用方法

首先输入命令:
npm install hexo-encrypt --save
等待安装完成后,修改博客配置文件_config.yml
在末尾添加:

1
2
encrypt: 
password: 123456

这里的123456默认密码,即若文章加密并且未声明独立密码即可通过默认密码解锁文章。

然后在package.json中修改插件的版本号,修改为"hexo-encrypt": "^0.2.0"

然后在每一篇文章的开头加入:

1
2
encrypt: true
enc_pwd: 123456

这里的enc_pwd独立密码,设定独立密码后文章不再使用默认密码解锁,改用独立密码解锁。

输入hexo s即可查看效果。
注意若修改完插件或密码需要先hexo clean清空缓存。


运行效果


测试了以上$4$个使用$js$的$bug$均未出错。


优化与自定义

解决deprecated错误

执行hexo s后可能会出现下图错误。

原因是用到的插件版本太老,有的功能已被弃用。
解决方法是手动下载一个hexo-fs下载地址
\blog\node_modules\hexo-encrypt\node_moduleshexo-fs替换为下载文件。
然后修改\blog\node_modules\hexo-encrypt\package.json\blog\node_modules\hexo-encrypt\package-lock.json,将所有hexo-fs的版本号替换为下载的版本号(里面含有的下载链接也修改一下)(截止于本文发稿时版本号为0.2.2)。

同样的也修改一下\blog\package.json\blog\package-lock.json,替换其中hexo-encrypt用到的hexo-fs的版本号。

再次执行hexo s后错误消失。

将输入文本框替换为密码框

找到\blog\node_modules\hexo-encrypt\lib\conf_post.js,找到这一段代码:

1
this.template = ' <input id="enc_pwd_input" type="text" style="' +

将其替换为:

1
this.template = ' <input id="enc_pwd_input" type="password" style="' +

hexo clean+hexo s后即可看到效果。

自定义密码错误提示

找到\blog\node_modules\hexo-encrypt\lib\conf_post.js,找到这一段代码:

1
'	document.getElementById("enc_error").innerHTML = "password error!"\n' +

password error!替换为你想要的提示。
hexo clean+hexo s后即可看到效果。

汉化插件

找到\blog\node_modules\hexo-encrypt
打开源码随便汉化即可。
hexo clean+hexo s后即可看到效果。

姥爷们赏瓶冰阔落吧~
  • 本文作者: Bill Yang
  • 本文链接: https://blog.bill.moe/encrypt/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!