全球视野

让建站和SEO变得简单

让不懂建站的用户快速建站,让会建站的提高建站效率!

js加密:自创一种浏览器言语可行吗?


发布日期:2024-11-05 13:29    点击次数:125


js加密,是前端很常见的需求。

常见的设施是用jshaman、jsjiami.online等进行js代码玷辱加密。

是否有其它的决议呢?比如:咱们能否我方设置一种前端浏览器言语,取代js(将js代码,改换为我方私有的言语,从而让他东谈主看不懂),以此竣事变相的js代码加密。

以此念念路,底下进行尝试和猜测。

有一个恰当这个观点的剧本,名为livescript,也不错在前端执行。

它的代码风景如下:

执行输出:

这个小众的言语,语法与js是有不小各异的。若是无数的这种代码出咫尺前端,替代js,竣事多样功能,貌似是具备了加密的适度。

举例,这生分的语法,js才气员看着细则是一脸懵:

何况,还有设施不错竣事javascript与livescript语法调遣:

咫尺为止,似乎是OK的:将js改换为livescript,然后再发布。

那么livescript这种语法在浏览器中是怎么被执行的呢?

经浅陋分析得知,livescript在浏览器中执行前,会进行编译:

其中的output变量看起来有些可疑,在此加一句console.log,输出,望望它是什么:

执行:

果不其然,livescript编译是把它自界说的语法改换成了js代码(livescript代码被收复为了js代码)。

这就讲授的通了,表面也就正确了:js虽然是不错被浏览器执行的。

livescript剧本最终会被改换成js代码。是以,它与aaencode、jjencode、jsf∪ck等访佛,不错视作一种编码。

由于能被狂放收复为js代码,是以,并不具备很强的加密适度。若是想加密js代码,防患代码被分析、复制、盗用,依然远远不足js玷辱加密用具的(jshaman、jsjiami.online等正宗js玷辱加密用具)。

大略有东谈主会说,若是livescript代码它莫得收复为js,而是径直执行,可能吗?

可能性相比小,这里不错梦猜度wasm(WebAssembly,非指汇编言语)。若是想让代码径直被执行,而不是转成js代码,就需要有一个“执行器”,浏览器是只给js准备了执行器,livescript想径直执行,就得像wasm通常也设置我方的执行器,这是个巨的大工程了,还得兼容整个js语法、还得遥远随js更新而更新(因为此处的场景要转js为livescript,这是本文商讨的愚弄点),概述辩论到这些,这个决议不太可行:自创一种前端言语,替代js,以竣事代码加密不行行。不管是转为js执行,依然我方写执行器,皆不行行。