背景

无意见看到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,之后有时间我再看看文本内容加密

参考文献