JavaScript 加密器

 给软件写个彩蛋,但是又不想随便被别人看见,于是乎给脚本加下密就成了必须的了,不是为了 Property software,而是来个 Easter egg 来取乐 :-)

找来找去,找到一个 JavaScript Compiler 还不错,经过测试可以在 Firefox 和 Safari 上正常使用(IE 就不考虑了,手头也没机器测试),普通的 Encrypt 工具可能可以支持 Safari,但是对 Firefox 的支持可真的是非常一般。

地址在:http://www.virtualpromote.com/tools/javascript-encrypt/

比如经典的 Hello World:

alert("Hello World");

被加密后就成了:

var enkripsi="cngpv'0:'00Jgnnm'02Umpnf'00'0;'1@"; teks=""; teksasli="";var panjang;panjang=enkripsi.length;for (i=0;i<panjang;i++){ teks+=String.fromCharCode(enkripsi.charCodeAt(i)^2) }teksasli=unescape(teks);document.write(teksasli);

看不懂了吧? ;-)

不过使用 JavaScript Compiler 有限制,生成的代码必须以单独的文件存放,而且文件还得写上 JavaScript 的标记段,因为其实它的原理是将加密的内容,解密后直接插入 DOM 树里形成的,如果不这样做,将会在浏览器窗口中直接看到解密后的 JavaScript  代码,从这种意义上说,它就不仅仅是 JavaScript 的 Compiler 了,HTML、CSS 一类也可以用它加密。

而且为了让加密后的代码能够更加容易地调用,我们最好还能够写成 Function 的模式。

这里是可供调用的完整的代码:

<script type="text/javascript">
function helloworld() {
    alert("Hello World");
}
</script>

加密后的代码就成了:

var enkripsi="'1Aqapkrv'02v{rg'1F'00vgzv-hctcqapkrv'00'1G'2Cdwlavkml'02jgnnmumpnf'0:'0;'02'5@'2C'02'02'02'02cngpv'0:'00Jgnnm'02Umpnf'00'0;'1@'2C'5F'2C'1A-qapkrv'1G"; teks=""; teksasli="";var panjang;panjang=enkripsi.length;for (i=0;i<panjang;i++){ teks+=String.fromCharCode(enkripsi.charCodeAt(i)^2) }teksasli=unescape(teks);document.write(teksasli);

把它单独存成一个文件(比如 foo.js),然后引用它:

<script type="text/javascript" src="/js/foo.js"></script>

以后,只要在程序中调用 helloworld 函数就可以显示 Hello World 了。 :-)

Posted by K*K Tue, 16 Dec 2008 23:02:49 +0800