怎么用gitpages还能藏住秘密

Posted by 咖啡不苦 on 2019-04-15

我们用gitpages写博客,但假设,你想把他当做笔记来使用,有些内容并不希望公开,别人看不了,只有你能看,该怎么办呢?

最直接的,我们想到,需要输入一个密码,才可以看到相应的内容。但整个gitpages是全静态的。你的密码以及验证程序不可避免的明文下载到浏览器端。即使做一个js代码混淆,基本上还是掩耳盗铃。

某天偶然发现一个叫static crypt的东西,他号称能用密码保护一个html。 https://robinmoisson.github.io/staticrypt/ , 他基于https://github.com/brix/crypto-js ,用 AES-256加密你的html文件,然后把加密过的内容发送到浏览器端,浏览器看到的是一个密码输入框,输入密码,解密,把解密后的html显示出来。大功告成!这个东西还提供命令行版本和npm模块支持。这就方便了我们和gitpages以及jekyll结合。

首先,确定什么东西是秘密的,不想让人看见,不能push到github的。

笔记原文

正常情况下,文章已md格式放在_posts 或 _drafts 下。但是我们的笔记,应该不能用原文md push到github上。不然人家直接去github看就好了。为了方便起见,我们在 _posts 文件夹下建一个s文件夹。方便加入 .gitignore 和脚本操作

秘钥

AES是对称加密方法。秘钥,也是我们在浏览器上看笔记时要输入密码,所以这个东西不能push上去简直是废话。

那如何做到不把这些东西放上去,我们还能在浏览器上看到我们的笔记呢?

1、首先,我们在网站的更目录里新建一个叫s的文件夹。方便我们找到所有加密过的笔记。

2、写一个脚本 crypt_posts.sh ; 首先这个脚本调用jekyll bilud。将我们的笔记md源文件编译成带样式的html;然后对这些html挨个调用staticrypt对其加密(秘钥也在这个文件里制定);再然后将加密生成的文件替换掉原来编译出来的带明文信息的文件。最后,在这个过程中,可生成一个index.html。 方便在访问${domain}/s 时提供加密文件的索引。当然,这个文件必须加入 .gitignore列表

3、额,没有第三步,好尴尬~