前情提要
众所周知,网页前段所书写的css和js代码都是在阳光下运行,众人都可以看到,肯定是不如在后端安全,那么如果要给你所写的JS文件上一个安全锁,降低可读性,更重要的是可以避免你所辛苦书写的js脚本被盗。而常见的处理手法,不外乎压缩,加密,混淆等,如果太简单,很容易被破解工具还原破解,因此,需要一种更安全和更复杂的做法和程序,本文以几个例子作为演示,希望能对又需要的人有所启发。
内容详情
目前,市面上有不少已经成熟,且运行多年的为js加密提供加密的几个服务商,比如:
达成的效果都是将原始 JavaScript 源代码转换为一种新的表示形式,在未经授权的情况下更难理解、复制、重用和修改。混淆的结果将具有原始代码的确切功能。
除了这些已经完备的在线服务外,还可以自己打造自己的加密服务。
接下来,分别从压缩,加密和混淆来介绍可以利用的工具和方法。
1.压缩
为什么要压缩js文件?有以下好处:
- 可去除变量名称,让代码不易阅读
- 此过程为不可逆,无法还原
- 大幅缩小代码量,缩短网页载入时间,让网站加载更为迅速
有几个在线服务可以实现这些
- YUI Compressor
- UglifyJS 3(支持ES6 语法)
2.加密
3.混淆
做完这些后,如果觉得代码不够美观,可以使用美化工具,比如:
如果觉得这么多服务要点来点去,比较麻烦,可以试试该网站,支持压缩,加密,混淆,美化,四合一:
以上都是线上工具集合,如果使用node.js,有已经制作好的加密库crypto-js来引用,试举一例:
const CryptoJS = require("crypto-js"); const encryptWithAES = (text) => { const passphrase = "123"; return CryptoJS.AES.encrypt(text, passphrase).toString(); }; const decryptWithAES = (ciphertext) => { const passphrase = "123"; const bytes = CryptoJS.AES.decrypt(ciphertext, passphrase); const originalText = bytes.toString(CryptoJS.enc.Utf8); return originalText; }; console.log(encryptWithAES("Hello World")); console.log(decryptWithAES('U2FsdGVkX1/TDn/61/mIePXrMaph+s5fXUvSc9T1gzA='));
这样,就会看到加密的'Hello World'就变成了'U2FsdGVkX1/TDn/61/mIePXrMaph+s5fXUvSc9T1gzA=',解密' U2FsdGVkX1/TDn/61/mIePXrMaph+s5fXUvSc9T1gzA='就又变回了‘Hello World’。
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号