背景

无意见看到Hexo的Post加密相关, 看了下逻辑似乎大部分逻辑可以在客户端实现, 所以我试着搭建了一下

流程

其实非常简单, 就是利用JS的顺序运行将输入错误密码的情况阻塞掉1

(function(){
    if('827ccb0eea8a706c4c34a16891f84e7b'){
        if (prompt('请输入文章密码','') !== '827ccb0eea8a706c4c34a16891f84e7b'){
            alert('密码错误!');
            history.back();
        }
    }
})();

密码部分只要放置在正文之前就行, 并且对于不同文件可以有不同密码:

layout: post
title: Jekyll Post 加密测试
category : Tech
password: 12345
tags : [URL, Git]

关于明文密码加密

这个加密安全性太低不过可以封掉一部分读者。Jekyll如果能够像Hexo一样控制服务端就能实现对文本内容的加密。2

MD5复杂到一定程度还是比较难破译的吧..

突然有个想法, 比如在写Post的时候直接写上MD5加密后的密文, 如此在进行验证的时候JS部分就不会把明文密码直接展示出来了:

layout: post
title: Jekyll Post 加密(密码 12345)
category : Tech
password: 12345
plainpassword: 827ccb0eea8a706c4c34a16891f84e7b
tags : [URL, Git]

Future

很不幸地告诉你们,这个加密实在太容易破解了,只需要查看一下NetWork就可以看到对应页面的全部URL,之后有时间我再看看文本内容加密

参考文献