基于node.js实现静态页面的entrypted和decrypte

237 °C
2019年7月1日21:29:39 发表评论

基于node.js实现静态页面的entrypted和decrypte

初识Node.js

今天想到我的有些东西不想让别人看到,我试着在github的静态页面上使用js进行前端的解密;加密的工作是在本地使用Node.js完成的

演示地址:https://zpliu1126.github.io/lecture/workpress/20190624.html

首先下载node.js中用于加密的插件crypto-js

插件安装好之后就要开始对源代码进行加密了;对了如果不想要这些插件上传到github的话还是在.gitignore文件中写上这个目录。

加密操作

关于文件的读取插件的使用可以参考 菜鸟教程的说明

关于crypto加密插件的使用主要步骤

1.js的正则表达式获取加密内容

[\s\S]*用于匹配包含换行符在内的内容

var bodycontet=filecontent.replace(/<!DOCTYPE html>([\s\S]*)<body>([\s\S]*)<\/body>([\s\S]*)<\/html>/ig,'$2');

2.crypto进行加密

获取body内的内容

var bodycontet=filecontent.replace(/<!DOCTYPE html>([\s\S]*)<body>([\s\S]*)<\/body>([\s\S]*)<\/html>/ig,'$2');

将内容进行加密

var ciphertext = CryptoJS.AES.encrypt(bodycontet, password).toString();

替换原有的内容为加密后的内容,并且设置css为不可见

var filecontent=filecontent.replace(/<body>([\s\S]*)<\/body>/ig,"<body>"+'<div id=\"encrypted\" style=\"display: none;\">'+ciphertext+'</div>'+"</body>");

 

解密操作

将加密代码封装成js文件后,只需要运行这个脚本就可以对指定文件进行加密操作

相对应加密操作是在本地进行的,而解密操作的进行则是在客户端浏览器进行,所以需要引入对应的解密函数,解密函数封装在node_modules\crypto-js\crypto-js.js文件中有需要的话只需要上传一份到github上就ok

这里主要是用到js的阻塞机制,其实使用input标签来进行密码的输入是一样的,而且还方便美化,我没有时间来做这些活,暂时就直接使用prompt函数接受用户的密码吧

同样当密码输入错误的时候 bytes.toString(CryptoJS.enc.Utf8)函数执行会报错;影响程序的继续执行。我在这里用了错误捕获机制,当出错的时候肯定是密码不正确的时候,就给出提示并且使用while循环来让页面不至于熄火。

总结:虽然说只是静态页面上使用了node.js但我感觉要是跟数据库进行交互的话,差不多就可以不需要学习php了;少学很东西,哈哈哈不过node.js听说学的进展很慢可能是它的帮助文档还不够吧(瞎猜的)

 

参考

crypto.js插件的使用

fs说明

 

zpliu

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: